2017-04-04 28 views
1

我有兩個數據幀以下剔除NaN值而做算術操作跨行在for循環

df1= 
    2492 3853 2486 3712 2288 
0 4 NaN 3.5 NaN NaN 
1 3 NaN 2.0 4.5 3.5 
2 3 3.5 4.5 NaN 3.5 
3 3. NaN 3.5 4.5 NaN 


df2= 

2492 0.476683 
3853 0.464110 
2486 0.438992 
3712 0.400275 
2288 0.379856 

給出現在我想通過排除NaN的獲得DF2值的總和值 預計輸出

0 0.915675[0.476683+0.438992] 
1 1.695806[0.476683+0.438992+0.400275+0.379856] 
2 1.759641[0.476683+0.464110+0.438992+0.379856]  
3 1.31595 [0.476683+0.438992+0.400275] 

請讓我知道你的想法如何實現這一目標的問題(無需更換NaN值設爲「0」)

+0

下面的答案可以解決您的問題嗎? –

回答

1
df2.sum(1).sum() 

應該足夠並跳過NaN。

第一個sum是一個DataFrame方法,它返回一個包含每行的總和的Series,然後第二個總和這個Series上的值。

NaN在默認情況下被忽略。

編輯:使用簡單df2.sum()應該足夠

0

你可以這樣做:

>>> ((df1.fillna(0)>0)*1).mul(df2.iloc[:,1].values).sum(axis=1) 
0 0.915675 
1 1.695806 
2 1.759641 
3 1.315950 
dtype: float64 

注意NaN不替換爲「參照」,你還有NaN在這之後你原來df1操作。