Groupby并根据字符串值保留行

时间:2020-04-15 20:57:00

标签: python pandas filter pandas-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

2 个答案:

答案 0 :(得分:2)

您可以这样操作:

dfTest.reindex(dfTest.groupby('name')['value'].agg(lambda x: (x=='h').idxmax()))

输出:

      name value
value           
0        a     x
3        b     h

答案 1 :(得分:1)

使用spdep的另一种方法:

3.6.2

输出:

drop_duplicates