Reputation: 31
Is it possible for pandas groupby
to treat None
s and NaN
s as separate entities?
Here is an example:
df = pd.DataFrame([
[np.nan, 5],
[None, 10],
['a', 7],
[np.nan, 5],
[None, 10]
])
Out:
0 1
0 NaN 5
1 None 10
2 a 7
3 NaN 5
4 None 10
df.groupby(0, dropna=False).mean()
Out:
1
0
a 7.0
NaN 7.5
However, I want to achieve the following result:
1
0
a 7.0
NaN 5.0
None 10.0
EDIT: an 'ideal' solution to this problem should:
Alternatively, explaining why the task cannot be done 'tidily' would also appreciated, so one can instead think about 'hacky' solutions.
Upvotes: 3
Views: 930
Reputation: 862511
Not very nice, but possible converting to strings:
print (df.groupby(df[0].astype(str)).mean())
1
0
None 10
a 7
nan 5
Upvotes: 3