选择datafram列中存在特定类别的第一行

2024-06-01 06:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我做这个手术有困难。我想为每个车手选择具有第一个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)

对于每个车手,我希望选择带有标记BG的行,但仅选择标记第一次出现时的行。 我尝试过分组和做一些分组操作,但都没有帮助

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

非常感谢你的帮助


Tags: 标记datatagbgx1x2bbq3
1条回答
网友
1楼 · 发布于 2024-06-01 06:23:14

我们能做到

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'}]

相关问题 更多 >