Замените нулевые значения с помощью groupby.first () в pandas - PullRequest
2 голосов
/ 08 февраля 2020

У меня есть требование, при котором я должен заменить нулевые (NaN) значения с помощью элемента groupby.first.

Тестовые данные:

ID,Name,Cost
1,A,12
2,B,16
3,C,28
4,A,12
5,D,33
6,B,16
7,A,
8,C,28
9,C,
10,D,33
11,D,33
12,B,16
13,B,16

Стоимость имени (предмета) остается то же самое во всем. Немногие из полей стоимости не заполнены. Мне нужно заполнить пропущенные значения Cost согласно стоимости объекта Name.

Я попробовал следующее, но это не сработало. Может кто-нибудь помочь, пожалуйста?

dataset['Cost'] = (dataset.groupby('Name')).apply(lambda x: dataset.groupby('Name')['Cost'].first())

Я использую pandas.

1 Ответ

2 голосов
/ 08 февраля 2020

Попробуйте fillna с map

s = df.groupby('Name')['Cost'].first().to_dict()

df['Cost'] = df['Cost'].fillna(df['Name'].map(s))

print(df)

   ID Name  Cost
0    1    A  12.0
1    2    B  16.0
2    3    C  28.0
3    4    A  12.0
4    5    D  33.0
5    6    B  16.0
6    7    A  12.0
7    8    C  28.0
8    9    C  28.0
9   10    D  33.0
10  11    D  33.0
11  12    B  16.0
12  13    B  16.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...