我有一个要求,我必须使用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())
我正在使用熊猫。
答案 0 :(得分:2)
尝试将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