ilo c Условная группировка pandas заполнить - PullRequest
1 голос
/ 19 июня 2020

Попытка условно заполнить NaN в кадре данных на основе:
1. значения в A (выполняется с помощью groupby)
2. внутри groupby (A), если значение - nan и первое, заполнить как ноль а затем заполнить (в примере A = a)
3. внутри groupby (A), если значение - nan и не первое, bfill (в примере A = b)
4. внутри groupby (A), если значение равно nan, но нет точки данных, для которой нужно следовать, заполните (A = c в примере)

Я чувствую запах тройной + лямбда, но хотел бы, чтобы это было написано с помощью pythoni c.

По сути, начальная точка будет:

df
     A    B
0    a    NaN
1    a    NaN
2    a    3.0
3    a    4.0
4    b    4.0
5    b    NaN
6    b    6.0
7    b    6.0
8    c    7.0
9    c    NaN
10   c    NaN

И df должен стать:

df
     A    B
0    a    0.0
1    a    0.0
2    a    3.0
3    a    4.0
4    b    4.0
5    b    6.0
6    b    6.0
7    b    6.0
8    c    7.0
9    c    7.0
10   c    7.0

1 Ответ

1 голос
/ 19 июня 2020

Мы можем сделать GroupBy.ffill, тогда мы уверены, что промежуточные результаты каждой группы заполнены правильно, после этого мы можем сделать Series.fillna с 0, потому что это единственные оставшиеся значения:

df['B'] = df.groupby('A')['B'].ffill().fillna(0)

    A    B
0   a  0.0
1   a  0.0
2   a  3.0
3   a  4.0
4   b  4.0
5   b  4.0
6   b  6.0
7   b  6.0
8   c  7.0
9   c  7.0
10  c  7.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...