グループ化したい列に多くの欠損値がある DataFrame があります。
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': ['1', '2', '3'], 'b': ['4', np.NaN, '6']})
In [4]: df.groupby('b').groups
Out[4]: {'4': [0], '6': [2]}
デフォルトでは、pandas groupby
グループ化された列に NaN が含まれる行が削除されます。
NaN 値をグループとして含めるにはどうすればよいですか?
ベストアンサー1
パンダ >= 1.1
pandas 1.1からは、この動作をより細かく制御できるようになりました。グループ化でNA値が許可されるようになりました使用dropna=False
:
pd.__version__
# '1.1.0.dev0+2004.g8d10bfb6f'
# Example from the docs
df
a b c
0 1 2.0 3
1 1 NaN 4
2 2 1.0 3
3 1 2.0 2
# without NA (the default)
df.groupby('b').sum()
a c
b
1.0 2 3
2.0 2 5
# with NA
df.groupby('b', dropna=False).sum()
a c
b
1.0 2 3
2.0 2 5
NaN 1 4