【问题标题】:Groupby and keep rows depending on string valueGroupby 并根据字符串值保留行
【发布时间】:2020-07-28 23:57:21
【问题描述】:

我有这个 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 我在value 中找到h,我想保留它。否则,任何value 都适合,例如:

In [109]: dfTest                                                                                         
Out[109]: 
  name value
0    a     x
1    b     h

【问题讨论】:

    标签: python pandas filter pandas-groupby


    【解决方案1】:

    你可以这样做:

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

    输出:

          name value
    value           
    0        a     x
    3        b     h
    

    【讨论】:

      【解决方案2】:

      drop_duplicates 的另一种方法:

      (dfTest.loc[dfTest['value'].eq('h').sort_values().index]
         .drop_duplicates('name', keep='last')
      )
      

      输出:

        name value
      1    a     y
      3    b     h
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-26
        • 2021-06-01
        • 2023-04-04
        • 1970-01-01
        • 2020-07-12
        • 1970-01-01
        • 2018-05-11
        • 2022-12-10
        相关资源
        最近更新 更多