【问题标题】:Get most common value for each value in row - pandas df获取行中每个值的最常见值 - pandas df
【发布时间】:2021-12-09 17:57:45
【问题描述】:

这可能是重复的,请告诉我。

我有一个这样的熊猫 df:

id name Common
One A
One A
One A
One B
Two C

我想输出如下内容:

每个 id 最常用的名称放在 common 列中。

id name Common
One A A
One A A
One A A
One B A
Two C C

我已经尝试过了,但此时我正在黑暗中投掷飞镖

df.groupby(['id', 'name']).agg(lambda x:x.value_counts().index[0])

【问题讨论】:

  • df.groupby(['id'])['name'].transform(lambda x: x.value_counts().index[0]) 或在里面使用x.mode()[0]
  • @QuangHoang 成功了,谢谢!

标签: python pandas pandas-groupby


【解决方案1】:

这行得通:

df['Common'] = df.groupby('id')['name'].transform(lambda x: x.mode()[0])

输出:

>>> df
    id name Common
0  One    A      A
1  One    A      A
2  One    A      A
3  One    B      A
4  Two    C      C

【讨论】:

    【解决方案2】:

    一个更长(可能更慢)的过程是旋转和映射:

    df.assign(Common = df.id.map(df.pivot(None, 'id', 'name').mode().T.squeeze()))
     
        id name Common
    0  One    A      A
    1  One    A      A
    2  One    A      A
    3  One    B      A
    4  Two    C      C
    

    【讨论】:

      猜你喜欢
      • 2017-11-08
      • 2017-01-06
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多