我有这个 DF:In [106]: dfTest = pd.DataFrame( {'name':['a','a','b','b'], 'value':['x','y','x','h']}) In [107]: dfTestOut[107]: name value0 a x1 a y2 b x3 b hname所以我的意图是每组获得一行value,保留将取决于。name如果对于我在 中找到h的每一组value,我想保留它。否则,任何value都适合,例如:In [109]: dfTest Out[109]: name value0 a x1 b h
2 回答
当年话下
TA贡献1890条经验 获得超9个赞
你可以这样做:
dfTest.reindex(dfTest.groupby('name')['value'].agg(lambda x: (x=='h').idxmax()))
输出:
name value
value
0 a x
3 b h
绝地无双
TA贡献1946条经验 获得超4个赞
另一种方法drop_duplicates:
(dfTest.loc[dfTest['value'].eq('h').sort_values().index]
.drop_duplicates('name', keep='last')
)
输出:
name value
1 a y
3 b h
添加回答
举报
0/150
提交
取消