![](/img/trans.png)
[英]How to iterate over pandas DataFrame multi-index and filtering based off another column value
[英]Iterate over column values matched value based on another column pandas dataframe
这是对
我有不止一行与列值匹配,并且想知道如何迭代以在有多个匹配项时有效地检索每个值。
数据框是
A B
p1 1
p1 2
p3 3
p2 4
p4 3
p5 5
p6 2
p7 5
... around 10000 rows
下面将始终选择 p3
df.loc[df['B'] == 3, 'A'].iloc[0]
所以我试着像这样迭代
if(len(df.loc[df['B'] == 3, 'A'])) > 1:
for i in range(0,len(df.loc[df['B'] == 3, 'A']))-1):
print(i,df.loc[df['B'] == 3, 'A'].iloc[i])))
它打印
0 p3
1 p4
对于所有匹配值
但是,有没有更有效的方法来做到这一点?
您可以通过在df.loc
代码中不使用.iloc[0]
来获取所有匹配值,如下所示:
df.loc[df['B'] == 3, 'A']
输出:
2 p3
4 p4
Name: A, dtype: object
输出左侧的2
4
是原始行索引。 如果想知道这 2 个提取的数据来自哪些行,您可以使用此信息。
删除iloc
部分和reset_index
以真正获得您的输出:
df.loc[df['B'] == 3, 'A'].iloc[0]
^^^^^^^^ Unnecessary
>>> df.loc[df['B'] == 3, 'A'].reset_index(drop=True)
0 p3
1 p4
Name: A, dtype: object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.