如何通过将第1列与字典中的键匹配到第2列中的词典值中仅替换为null值?有条件地查找有条件替换



我试图通过将第1列中的键与字典中的键匹配到第2列中的null值。

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%
  1. 我计算了平均税率购买国家。
  2. 我放弃了所有没有平均计算的国家:所有值null
  3. 我从结果{country,tr(mean(} =(k,v(
  4. 中创建了一个dict
  5. 我创建了代码,将税率的价值替换为
  6. 中的匹配国家

注意:它替换了税率中的所有值,而不仅仅是null值

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"正确替换值,但是它正在替换所有"税率"值,而我只需要它来替换空值。

*预期结果*

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%

尝试使用transform并使用fillna

df['tax rate']=df['tax rate'].fillna(df.groupby('country')['tax rate'].transform('mean'))

最新更新