![](/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.