Как заменить только нулевые значения в столбце 2 значениями словаря путем сопоставления столбца 1 с ключом в словаре?Условная находка Условная замена - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь заменить пустые значения только в столбце 2 значениями словаря путем сопоставления значений в столбце 1 с ключами в словаре.

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. Я создал диктат из результатов {страна, TR (среднее)} = (k, v)
  4. Я создал код, который заменяет значения в налоговой ставке соответствующей стране в dict

ПРИМЕЧАНИЕ: он заменяет все значения в налоговой ставке, а не только нулевые значения

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%

1 Ответ

1 голос
/ 01 мая 2019

Попробуйте с transform и с использованием fillna

df['tax rate']=df['tax rate'].fillna(df.groupby('country')['tax rate'].transform('mean'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...