7
私はPandasデータフレームの列をまたいで合計しようとしています。すべての列にNaNがあると、合計= 0が得られます。私はsum = NaNがドキュメントに基づいていると予想していました。ここで私が持っているものです:=pandasのすべてのNaNの合計はゼロを返しますか?
In [136]: df = pd.DataFrame()
In [137]: df['a'] = [1,2,np.nan,3]
In [138]: df['b'] = [4,5,np.nan,6]
In [139]: df
Out[139]:
a b
0 1 4
1 2 5
2 NaN NaN
3 3 6
In [140]: df['total'] = df.sum(axis=1)
In [141]: df
Out[141]:
a b total
0 1 4 5
1 2 5 7
2 NaN NaN 0
3 3 6 9
pandas.DataFrame.sumのドキュメントは、「全体の行/列がNAである場合、結果はNAになります」と言うので、私はなぜ「合計」理解していませんインデックス2のNaNではなく0になります。何が欠けていますか?
df['total'] = df.sum(axis=1)
df.loc[df['a'].isnull() & df['b'].isnull(),'total']=np.nan
又は
df['total'] = df.sum(axis=1)
df.loc[df[['a','b']].isnull().all(1),'total']=np.nan
後者のオプションは、おそらく、より実用的であるので:
FYI予想通りにNaNを取得します(0.17.0)。 – DSM
ありがとうございます。 。 。私は0.17.0も走っているので、これはさらに困惑しています。 – dgd
TBHこれはバグレポートのようになってきています。私は 'pd.show_versions()'を見ようとしていましたが、SOよりもgithubのほうが良く適合しています。 :-) – DSM