[英]How to perform element-wise sum of multiple series, preserving NaNs
我有一個 Pandas DataFrame,例如:
df = pd.DataFrame([[1.0, np.nan, 3.0],
[4.0, 5.0, 6.0],
[np.nan, np.nan, np.nan],
[np.nan, 8.0, 9.0],
[0.0, 0.0, 0.0]],
columns=['a', 'b', 'c'])
df =
a b c
0 1.0 NaN 3.0
1 4.0 5.0 6.0
2 NaN NaN NaN
3 NaN 8.0 9.0
4 0.0 0.0 0.0
我想對每一行求和,這樣NaN
被忽略(即被視為 0),除非整行是NaN
(例如第 2 行)。 想要的答案是:
column_sum(df) =
0 4.0
1 15.0
2 NaN
3 17.0
4 0.0
請注意,第 2 行的總和是NaN
,而第 4 行的總和是0.0
。 必須保持這種區別。
我試過:
df.sum(axis=1, skipna=True) =
0 4.0
1 15.0
2 0.0
3 17.0
4 0.0
這將第 2 行設為0.0
。 使用.fillna(0)
做同樣的事情。
我可以看到一種逐列執行此操作的方法,可以隨時屏蔽NaN
值,但是有沒有更有效的方法?
謝謝,克里斯
在DataFrame.sum
使用參數min_count=1
,默認值 ( 0
) 返回0
而不是NaN
s:
print(df.sum(axis=1, min_count=1))
0 4.0
1 15.0
2 NaN
3 17.0
4 0.0
dtype: float64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.