我有一个需求,需要使用groupby.first元素来替换空值(NaN)。
测试数据:
ID,Name,Cost1,A,122,B,163,C,284,A,125,D,336,B,167,A,8,C,289,C,10,D,3311,D,3312,B,1613,B,16
某一名称(项目)的成本在整个数据集中保持不变。一些成本字段没有填写。我需要根据对应的名称对象的成本来填充这些缺失的成本值。
我尝试了以下方法,但没有成功。请问有人可以帮助吗?
dataset['Cost'] = (dataset.groupby('Name')).apply(lambda x: dataset.groupby('Name')['Cost'].first())
我使用的是pandas。
回答:
尝试使用fillna
和map
s = df.groupby('Name')['Cost'].first().to_dict()df['Cost'] = df['Cost'].fillna(df['Name'].map(s))
print(df) ID Name Cost0 1 A 12.01 2 B 16.02 3 C 28.03 4 A 12.04 5 D 33.05 6 B 16.06 7 A 12.07 8 C 28.08 9 C 28.09 10 D 33.010 11 D 33.011 12 B 16.012 13 B 16.0