Groupby 并根据字符串值保留行

我有这个 DF:


In [106]: dfTest = pd.DataFrame( {'name':['a','a','b','b'], 'value':['x','y','x','h']})    

In [107]: dfTest

Out[107]: 

  name value

0    a     x

1    a     y

2    b     x

3    b     h

name所以我的意图是每组获得一行value,保留将取决于。name如果对于我在 中找到h的每一组value,我想保留它。否则,任何value都适合,例如:


In [109]: dfTest                                                                                         

Out[109]: 

  name value

0    a     x

1    b     h


一只名叫tom的猫
浏览 165回答 2
2回答

当年话下

你可以这样做:dfTest.reindex(dfTest.groupby('name')['value'].agg(lambda x: (x=='h').idxmax()))输出:      name valuevalue           0        a     x3        b     h

绝地无双

另一种方法drop_duplicates:(dfTest.loc[dfTest['value'].eq('h').sort_values().index]   .drop_duplicates('name', keep='last'))输出:  name value1    a     y3    b     h
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python