2 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
當(dāng)您使用numeric_only它會(huì)“刪除”非數(shù)字列,因此在第二種情況下,它會(huì)刪除所有列,因?yàn)樗鼈兌际亲址?。如果你更仔?xì)地檢查第一種情況的平均值,你會(huì)看到在第二行和第三行,它只采用11和12,因?yàn)?10和120由于空字符串而被“丟棄”。
如果需要,您可以執(zhí)行以下操作:
df['avg'] = df[['A1','A2']].replace('', np.nan).apply(lambda row: np.nanmean(row), axis=1)
它將“”替換為NaN,并得到忽略那些NaN的平均值

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
應(yīng)將列強(qiáng)制為數(shù)值類型。一個(gè)簡(jiǎn)單的方法可以是:
df['avg'] = pd.DataFrame({col : pd.to_numeric(df[col]) for col in df.columns}).mean(axis=1)
它按預(yù)期提供:
A1 A2 avg
0 10 10.0
1 110 110.0
2 12 120 66.0
添加回答
舉報(bào)