我有一个这样的数据框:
df = pd.DataFrame([[1, 2, np.nan],
[1, np.nan, 3],
[2, 2, 3],
[3, 4, np.nan]])
当我按预期groupby
的所有三列,然后cumcount
的时候,所有返回值都应该为0,因为每个组中只有一行,但是我得到的是:
In [34]: df.groupby([0, 1, 2]).cumcount()
Out[34]:
0 0
1 1
2 0
3 2
dtype: int64
我们可以看到所有具有nan
值的行都被分组为一个组,这是bug还是我不知道的东西?
答案 0 :(得分:0)
groupby
省略了NaN
行,因此可能的解决方案应将它们替换为数据中不存在的值,例如-1
。
顺便说一句,cumcount
似乎是用省略的行分隔的组创建的。
for i, df in df.groupby([0, 1, 2]):
print (df)
0 1 2
2 2 2.0 3.0
print (df.fillna(-1).groupby([0, 1, 2]).cumcount())
0 0
1 0
2 0
3 0
dtype: int64