混合类型列上的 Pandas groupby

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


     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()

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


翻翻过去那场雪
浏览 1508回答 1
1回答

哆啦的时光机

使用try-except声明:#if need convert strings column to mixed valuesdf['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       value0  var_1        2.051  var_2        10052  var_3  'some_str'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python