簡體   English   中英

如何執行多個系列的逐元素求和,保留 NaN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM