Python:提取唯一索引值并在循环中使用它们
Posted
技术标签:
【中文标题】Python:提取唯一索引值并在循环中使用它们【英文标题】:Python: Extract unique index values and use them in a loop 【发布时间】:2021-09-13 11:17:18 【问题描述】:我想应用下面的循环,对于每个索引值,将返回名为 SERIAL_NUMBER 的列的唯一值。本质上我想确认每个索引都有一个唯一的序列号。
index_values = df.index.levels
for i in index_values:
x = df.loc[[i]]
x["SERIAL_NUMBER"].unique()
但是,问题是我的数据集有一个多索引,正如您在下面看到的那样,它存储在冻结列表中。我只对包含长数字的索引值感兴趣。 “车辆”一词也可以作为索引,因为它在整个数据集中重复出现。
如何将这些值提取到列表中,以便在循环中使用它们?
index_values
>>
FrozenList([['0557bf98-c3e0-4955-a23f-2394635ab531', '074705a3-a96a-418c-9bfe-14c37f5c4e6f', '0f47e260-0fa2-40ba-a417-7c00ea74248c', '17342ca2-6246-4150-8080-96d6125cf2b5', '26c6c0d1-0134-4b3a-a149-61dd93afab3b', '7600be43-5d0a-49b3-a1ee-fd107db5822f', 'a07f2b0c-447c-4143-a361-d7ddbffdcc77', 'b929801c-2f32-4a95-bfc4-48a05b48ee01', 'cc912023-0113-42cd-8fe7-4df4005127c2', 'e424bd02-e188-462e-a1a6-2f4ed8fe0a2d'], ['vehicle']])
【问题讨论】:
您可以添加数据来创建 FrozenList 吗?如果它总是看起来像这样,您可能只需要index_values_as_list = [item for item in index_values[0]]
【参考方案1】:
没有例子很难判断,但我认为你需要
df.index.get_level_values(0).unique() # add .tolist() if you want a list
import pandas as pd
df = pd.DataFrame('A' : [5]*5, 'B' : [6]*5)
df = df.set_index('A',append=True)
df.index.get_level_values(0).unique()
Int64Index([0, 1, 2, 3, 4], dtype='int64')
df.index.get_level_values(1).unique()
Int64Index([5], dtype='int64', name='A')
要从索引级别删除重复项,请使用.duplicated()
方法。
df[~df.index.get_level_values(1).duplicated(keep='first')]
B
A
0 5 6
【讨论】:
以上是关于Python:提取唯一索引值并在循环中使用它们的主要内容,如果未能解决你的问题,请参考以下文章
GrapQHL Apollo Server,提取值并在解析器中使用它们