翻翻過(guò)去那場(chǎng)雪
2023-08-22 14:49:15
我正在嘗試將 pandas groupby 應(yīng)用于包含浮點(diǎn)數(shù)和字符串的列。數(shù)據(jù)框看起來(lái)像: name value0 var_1 1.41 var_2 11103 var_2 9004 var_3 'some_str'5 var_1 2.7 我正在嘗試應(yīng)用 groupby 方法,以便輸出數(shù)據(jù)幀看起來(lái)像: name value0 var_1 2.151 var_2 10052 var_3 'some_str'即獲取多次記錄的所有值的平均值,并按原樣保留非數(shù)字值。如果列僅由數(shù)字類(lèi)型組成,則可以很簡(jiǎn)單地實(shí)現(xiàn)為:new_df = df.groupby('name').mean().reset_index()有沒(méi)有一種簡(jiǎn)單的方法來(lái)克服混合類(lèi)型,這使得我上面寫(xiě)的方法不適用?
1 回答

哆啦的時(shí)光機(jī)
TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用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'
添加回答
舉報(bào)
0/150
提交
取消