将值从一个数据框替换为另一个

时间:2018-12-03 18:52:21

标签: python pandas dataframe

我正在尝试将列中的差异从一个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 :(得分:2)

df1中创建一列,并从Name列中删除逗号

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

使用df1df2Name_nocomma合并到Name以得到更正的 Name,以创建{{ 1}}

df2

使用Combine_first将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)

答案 1 :(得分:0)

您需要sortappend

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

result_df = df1.append(df2)