簡體   English   中英

Select 在 dataframe 的列中存在特定類別的第一行

[英]Select first row with a particular category present in a column of the dataframe

我在執行此操作時遇到問題。 我想要 select dataframe 行,每個行都有第一個 BG 標簽。

data = [{'rider': 'x1', 'quarter':'q1' , 'tag':BB},
 {'rider': 'x1', 'quarter':'q2' , 'tag':BG},
 {'rider': 'x1', 'quarter':'q3' , 'tag':BB},
 {'rider': 'x2', 'quarter':'q1' , 'tag':BG},
 {'rider': 'x2', 'quarter':'q2' , 'tag':BB},
{'rider': 'x2', 'quarter':'q3' , 'tag':BB},
 {'rider': 'x2', 'quarter':'q4' , 'tag':BG},
{'rider': 'x3', 'quarter':'q1' , 'tag':BB},
 {'rider': 'x3', 'quarter':'q2' , 'tag':BB},
 {'rider': 'x3', 'quarter':'q3' , 'tag':BG},
  {'rider': 'x3', 'quarter':'q4' , 'tag':BG}
 ] 

 df = pd.DataFrame(data)

對於每個騎手,我想 select 帶有標簽 BG 的行,但只有標簽第一次出現時的行。 我嘗試過子集化並進行一些 groupby 操作,但它們沒有幫助。

 O/P:
{'rider': 'x1', 'quarter':'q2' , 'tag':BG}
{'rider': 'x2', 'quarter':'q1' , 'tag':BG}
{'rider': 'x3', 'quarter':'q3' , 'tag':BG}

非常感謝你的幫助!

我們可以做的

df.loc[df.tag=='BG'].drop_duplicates('rider')
Out[556]: 
  rider quarter tag
1    x1      q2  BG
3    x2      q1  BG
9    x3      q3  BG

對於dict

d=df.loc[df.tag=='BG'].drop_duplicates('rider').to_dict('r')
d
Out[559]: 
[{'quarter': 'q2', 'rider': 'x1', 'tag': 'BG'},
 {'quarter': 'q1', 'rider': 'x2', 'tag': 'BG'},
 {'quarter': 'q3', 'rider': 'x3', 'tag': 'BG'}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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