第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

熊貓均值函數(shù)返回所有 NaN

熊貓均值函數(shù)返回所有 NaN

守著星空守著你 2022-09-20 16:49:34
我有這個(gè)數(shù)據(jù)幀:df = [{'A1':10, 'A2':''}, {'A1':11,'A2':110}, {'A1':12,'A2':120}]我想平均忽略''(空字符串)值的不同列。這是所需的輸出df_AVG = [{'A1':10, 'A2':'','avg':10}, {'A1':11,'A2':110,'avg': 60.5}, {'A1':12,'A2':120,'avg':66}]我可以使用以下代碼執(zhí)行此操作:df['avg'] = df[['A1','A2']].mean(axis=1, numeric_only=True)但是當(dāng)我修改數(shù)據(jù)幀并且它包含多個(gè)空格時(shí),如下所示df = [{'A1':10, 'A2':''}, {'A1':'','A2':110}, {'A1':12,'A2':120}]我運(yùn)行相同的代碼,輸出是這樣的。所有“avg”值都是 NaN,包括以前有效的值:df_AVG = [{'A1':10, 'A2':'','avg':NaN}, {'A1':11,'A2':110,'avg': NaN}, {'A1':12,'A2':120,'avg':NaN}]你能告訴我這種方法有什么問題嗎?謝謝!
查看完整描述

2 回答

?
慕田峪4524236

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的平均值


查看完整回答
反對(duì) 回復(fù) 2022-09-20
?
慕哥6287543

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


查看完整回答
反對(duì) 回復(fù) 2022-09-20
  • 2 回答
  • 0 關(guān)注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)