我正在尝试将 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'
添加回答
举报
0/150
提交
取消