pandas 如何合并两个具有不同列值变体的 Dataframe ?

kq0g1dla  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(171)

我有两个数据框,我想合并在同一个列名,但值可以有不同的变化值。
示例。值的变化:
| 变化|
| - -|
| 美国|
| 美国|
| 美利坚合众国|
| 美利坚合众国|
| 美利坚合众国|
假设 Dataframe 如下:df1 =
| 乡村|栏B|
| - -|- -|
| 印度Name|单元2|
| 中国|单元4|
| 美利坚合众国|单元2|
| 英国|单元4|
df2 =
| 国家/地区|CLM公司|
| - -|- -|
| 美国|值1|
| 中国|值2|
| 输入|val 3值|
现在我如何合并,使美国与美国合并?
我尝试过DataFrame合并,但它只对列名的匹配值进行合并。
是否有办法匹配变体并合并 Dataframe ?

gcuhipw9

gcuhipw91#

您只需创建一个reftable,然后合并
您的数据:

df = pd.DataFrame({'name':['USA', 'US', 'United States', 'FR', 'France'],
                   'val':[1,2,3,4,5]})
df

            name  val
0            USA    1
1             US    2
2  United States    3
3             FR    4
4         France    5

您的参考表:

reftable = pd.DataFrame({'name':['United States', 'US', 'USA', 'United States of America', 'The United States of America', 'France', 'FR', 'Frank'],
                         'uniqname':['us']*5+['fr']*3})
reftable
                           name uniqname
0                 United States       us
1                            US       us
2                           USA       us
3      United States of America       us
4  The United States of America       us
5                        France       fr
6                            FR       fr
7                         Frank       fr

现在合并:

new = pd.merge(df, reftable, on='name', how='left')
new

            name  val uniqname
0            USA    1       us
1             US    2       us
2  United States    3       us
3             FR    4       fr
4         France    5       fr
w8f9ii69

w8f9ii692#

使用.count来计算United States在列表中出现的次数,然后使用if命令来查看United States是否在列表中出现多次。对所有其他选项都执行此操作,最后使用if命令来检查列表中是否有任何选项,以输出您想要的值。

相关问题