Замените NA в одном DataFrame значением из другого DataFrame в ptyhon - PullRequest
0 голосов
/ 27 октября 2018

Я новичок в кодировании, и у меня есть 2 кадра данных, которые я выложу следующим образом:

raw_data:

country_code      homicides_per_100k
     ABC               2.6
     ABB               nan
     ACC               nan

homi_set:

Country Code          year
     ABC               2.6
     ACC               11
     ABB               3.1
     ADD               0.5

Порядоки форма двух фреймов данных не совпадает.

Как я могу использовать данные из homi_set для замены nan в raw_data?

Мой код выглядит следующим образом.это не работает:

for row, homicide in enumerate(raw_data['homicides_per_100k']):
    if homicide == "":
       country_code = raw_data.loc[row, 'country_code']
       homi_set_index = homi_set.index[homi_set['Country Code'] == country_code]
       homi_value = homi_set.loc[homi_set_index, '2014']
       raw_data.loc[row, 'homicides_per_100k'] = homi_value

Ответы [ 2 ]

0 голосов
/ 27 октября 2018
import pandas as pd
import numpy as np
# Just Creating your dataframes
raw_data = pd.DataFrame([('ABC', 2.6), ('ABB', np.nan), ('ACC', np.nan)], columns=['Country_code', 'homicides_per_100k'] )
homi_set = pd.DataFrame([('ABC', 2.6), ('ACC', 11), ('ABB', 3.1), ('ADD', 0.5)], columns=['Country_code', 'year'] )
# Left Join
new_set = pd.merge(raw_data, homi_set, on='Country_code', how='left')
# condition on the column
new_set['homicides_per_100k'] = np.where(new_set['homicides_per_100k'].isnull(), new_set['year'], new_set['homicides_per_100k'] )
del new_set['year']
new_set

enter image description here

0 голосов
/ 27 октября 2018

set_index + combine_first. Задание индекса позволяет обновлять значения на основе country_code. Сначала объединение отдает приоритет ненулевым значениям в raw_data, если в homi_set.

есть другое значение.
raw_data = raw_data.set_index('country_code')
raw_data.combine_first(homi_set.set_index('Country Code')
                               .rename(columns={'year': 'homicides_per_100k'}))

print(raw_data)
              homicides_per_100k
country_code                    
ABC                          2.6
ABB                          3.1
ACC                         11.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...