在熊猫中使用groupby.first()替换空值

时间:2020-02-07 21:43:18

标签: python-3.x pandas machine-learning

我有一个要求,我必须使用groupby.first元素替换null(NaN)值。

测试数据:

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

名称(项目)的成本始终保持不变。很少填写“费用”字段。我需要根据相应的Name对象成本填充那些缺失的Cost值。

我尝试了以下操作,但没有成功。有人可以帮忙吗?

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

我正在使用熊猫。

1 个答案:

答案 0 :(得分:2)

尝试将fillnamap

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