簡體   English   中英

基於另一列熊貓數據框迭代列值匹配值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM