【问题标题】:Pandas groupby on mixed type column混合类型列上的 Pandas groupby
【发布时间】:2021-01-07 11:18:29
【问题描述】:

我正在尝试将 pandas groupby 应用于包含浮点数和字符串的列。 DataFrame 看起来像:

     name      value
0    var_1     1.4
1    var_2     1110
3    var_2     900
4    var_3     'some_str'
5    var_1     2.7   

我正在尝试应用 groupby 方法,以便输出数据框看起来像:

     name      value
0    var_1     2.15
1    var_2     1005
2    var_3     'some_str'

即获取多次记录的所有这些值的平均值,并保留非数字值。

如果该列仅由数字类型组成,这将很简单,可以实现为:

new_df = df.groupby('name').mean().reset_index()

有没有一种简单的方法来克服使我上面写的这种方法不适用的混合类型?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用try-except 声明:

    #if need convert strings column to mixed values
    df['value'] = pd.to_numeric(df['value'], errors='coerce').fillna(df['value'])
    

    def f(x):
        try:
            return x.mean()
        except:
            return ','.join(x)
    
    new_df = df.groupby('name')['value'].apply(f).reset_index()
    print (new_df)
        name       value
    0  var_1        2.05
    1  var_2        1005
    2  var_3  'some_str'
    

    【讨论】:

      猜你喜欢
      • 2017-05-05
      • 2018-05-12
      • 2014-10-21
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 2020-04-25
      • 2018-05-19
      • 1970-01-01
      相关资源
      最近更新 更多