私はパンダの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
全体がNaN
(たとえば行2)である場合を除いて、sが無視される(つまり0として扱われる)ように各行を合計したいと思います。望ましい答えは次のとおりです。
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
値をマスクしながら実行する方法を確認できますが、より効率的な方法はありますか?
ありがとう、クリス
でパラメータmin_count=1
を使用しDataFrame.sum
、デフォルト値(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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加