为了账号安全,请及时绑定邮箱和手机立即绑定

混合类型列上的 Pandas groupby

混合类型列上的 Pandas groupby

翻翻过去那场雪 2023-08-22 14:49:15
我正在尝试将 pandas groupby 应用于包含浮点数和字符串的列。数据框看起来像:     name      value0    var_1     1.41    var_2     11103    var_2     9004    var_3     'some_str'5    var_1     2.7   我正在尝试应用 groupby 方法,以便输出数据帧看起来像:     name      value0    var_1     2.151    var_2     10052    var_3     'some_str'即获取多次记录的所有值的平均值,并按原样保留非数字值。如果列仅由数字类型组成,则可以很简单地实现为:new_df = df.groupby('name').mean().reset_index()有没有一种简单的方法来克服混合类型,这使得我上面写的方法不适用?
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

使用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'


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1550 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信