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