Замена значений из одного кадра данных в другой - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь исправить несоответствия в столбце от одного df до столбца в другом.Таблицы также не отсортированы.Как я могу сделать это с помощью Python.Пример:

df1

Age        Name

40        Sid Jones
50        Alex, Bot
32        Tony Jar
65        Fred, Smith
24        Brad, Mans

df2

Age        Name

24        Brad Mans
32        Tony Jar
40        Sid Jones
65        Fred Smith
50        Alex Bot

Мне нужно заменить значения в df2, чтобы они соответствовали значениям в df1, как вы можете видеть в моем примере расхождениязапятые в именах.

Ожидаемый результат для df2:

Age        Name

24        Brad, Mans
32        Tony Jar
40        Sid Jones
65        Fred, Smith
50        Alex, Bot

Значения в df2 должны быть изменены, чтобы соответствовать значениям df1s.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Создайте столбец в df1 с запятыми, удаленными из столбца Name

df1['Name_nocomma'] = df1.Name.str.replace(',', '')

, объедините df1 в df2, используя Name_nocomma & Name, чтобы получить исправлено Name создать новую версию df2

df2_out = df2.merge(df1, left_on='Name', right_on='Name_nocomma', how='left')[['Age_x', 'Name_x', 'Name_y']]

использовать объединение_первого для объединения Name_y & Name_x в новый столбец Name

df2_out['Name'] = df2_out.Name_y.combine_first(df2_out.Name_x)

удалить / переименовать промежуточные столбцы

del df1['Name_nocomma']
del df2_out['Name_x']
del df2_out['Namy_y']
df2_out.rename({'Age_x': 'Age'}, axis=1, inplace=True)

df2_out
#outputs:
   Age         Name
0   24    Brad Mans
1   32     Tony Jar
2   40    Sid Jones
3   65   Fred Smith
4   50     Alex Bot
0 голосов
/ 03 декабря 2018

вам нужно сортировать и добавить

df1.sort(by=['Age'], inplace = True)
df2.sort(by=['Age'], inplace = True)

result_df = df1.append(df2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...