Панды cumcount (), когда существует np.nan - PullRequest
0 голосов
/ 28 августа 2018

У меня есть такой фрейм данных:

df = pd.DataFrame([[1, 2, np.nan],
                   [1, np.nan, 3],
                   [2, 2, 3],
                   [3, 4, np.nan]])

когда я groupby все 3 столбца, а затем cumcount, как и ожидалось, все возвращаемое значение должно быть 0, потому что в каждой группе только одна строка, но я получаю:

In [34]: df.groupby([0, 1, 2]).cumcount()
Out[34]:
0    0
1    1
2    0
3    2
dtype: int64

и мы видим, что все строки со значением nan сгруппированы в одну группу, так что это ошибка или что-то, чего я не знаю?

1 Ответ

0 голосов
/ 28 августа 2018

groupby пропустить NaN s строк, поэтому возможное решение должно заменить их на значение, которого нет в данных, например, -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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...