GroupBy с помощью ffill удаляет группу и не помещает группу в индекс - PullRequest
3 голосов
/ 01 октября 2019

У меня очень странная проблема с тех пор, как я перенес свой код с одного компьютера на другой. Я использую версию 0.25.1 для панд в этой системе, но я не уверен в версии для панд, которую я использовал ранее.

Проблема заключается в следующем:

Я создаю простой несортированный (фиктивный) фрейм данных, на котором хочу отсортировать значения и заполнить все значения NaN вперед.

In [1]: import pandas as pd
   ...: import numpy as np

In [2]: test = pd.DataFrame({"group" : ["A", "A", "A", "B", "B", "B", "C", "C"],
   ...:                      "count" : [2, 3, 1, 2, 1, 3, 1, 2],
   ...:                      "value" : [10, np.nan, 30, np.nan, 19, np.nan, 25, np.nan]})

In [3]: test
Out[3]:
  group  count  value
0     A      2   10.0
1     A      3    NaN
2     A      1   30.0
3     B      2    NaN
4     B      1   19.0
5     B      3    NaN
6     C      1   25.0
7     C      2    NaN

Однако, когда я это делаю, я теряю весь столбец "группа", и он также не появляется в моем индексе.

In [4]: test.sort_values(["group", "count"]).groupby("group").ffill()
Out[4]:
   count  value
2      1   30.0
0      2   10.0
1      3   10.0
4      1   19.0
3      2   19.0
5      3   19.0
6      1   25.0
7      2   25.0

Я также пытался использовать следующее с использованием fillna, но это дает мне тот же результат:

In [5]: test.sort_values(["group", "count"]).groupby("group").fillna(method = "ffill")
Out[5]:
   count  value
2      1   30.0
0      2   10.0
1      3   10.0
4      1   19.0
3      2   19.0
5      3   19.0
6      1   25.0
7      2   25.0

Кто-нибудь знает, что я делаю неправильно? Кажется, проблема связана с методом ffill, поскольку я МОГУ использовать .mean () в группе и сохраняю свои группы.

1 Ответ

3 голосов
/ 01 октября 2019

IICU, вы должны использовать 'update`, чтобы получить результаты обратно на фрейм данных

test.update(test.sort_values(["group", "count"]).groupby("group").ffill())
print(test)

Вывод

group   count   value
0   A   2   10.0
1   A   3   10.0
2   A   1   30.0
3   B   2   19.0
4   B   1   19.0
5   B   3   19.0
6   C   1   25.0
7   C   2   25.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...