我试图通过将第1列中的值与字典中的键匹配来仅用字典中的值替换第2列中的空值。
Country Rate Tax Rate
Algeria 2.00% 76.90%
Angola 5.00% null
Algeria 2.00% null
Angola 5.00% null
Algeria 2.10% 76.90%
Angola 4.90% 52.10%
Algeria 2.20% 76.90%
注意:它将代替税率中的所有值,而不仅仅是空值
tr = df.groupby('country')['tax rate'].mean()
tr.dropna(inplace=True)
tr_dict = tr.to_dict()
df['tax rate'] = df['country'].apply(lambda x: tr_dict.get(x))
结果
Country Rate Tax Rate
Algeria 2.00% mean of Algeria
Angola 5.00% mean of Angola
Algeria 2.00% mean of Algeria
Angola 5.00% mean of Angola
Algeria 2.10% mean of Algeria
Angola 4.90% mean of Angola
Algeria 2.20% mean of Algeria
我相信我在代码末尾缺少一些内容,因为它可以正确地将值替换为“国家/地区”,但是它可以替换所有“税率”值,并且我只需要替换空值即可。
*预期结果*
Country Rate Tax Rate
Algeria 2.00% 76.90%
Angola 5.00% mean of Angola
Algeria 2.00% mean of Algeria
Angola 5.00% mean of Angola
Algeria 2.10% 76.90%
Angola 4.90% 52.10%
Algeria 2.20% 76.90%
答案 0 :(得分:1)
尝试使用transform
并使用fillna
df['tax rate']=df['tax rate'].fillna(df.groupby('country')['tax rate'].transform('mean'))