np.nan存在时的熊猫cumcount()

时间:2018-08-28 08:13:09

标签: python pandas

我有一个这样的数据框:

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还是我不知道的东西?

1 个答案:

答案 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