我在执行此操作时遇到了麻烦。我想为每个骑手选择具有第一个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的行,但仅选择该标签首次出现时的行。我尝试了子集化并进行了一些groupby操作,但是它们没有帮助。
解决方案:
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