首页 > 解决方案 > 以不区分大小写的方式映射两个数据帧(Python pandas)

问题描述

我有两个不同长度的数据框。

db
index| Size   | GROUP FORMAT
1    | AA     | Unknown
2    | BB     | Unknown
3    | CC     | Unknown

db2
index| GROUP FORMAT| FORMAT
1    | G1          | Aa
2    | G2          | bB

db2 的 FORMAT 列和 db 的 Size 的字母相同,但大小写可能不同。我想映射它们以获得:

db
index| Size   | GROUP FORMAT
1    | AA     | G1
2    | BB     | G2
3    | CC     | Unknown

但是,如果可能的话,我宁愿不复制和删除任何列。是否可以以不区分大小写的方式映射两个数据帧?

标签: python-3.xpandasdataframedictionary

解决方案


尝试全部转换为大写,然后合并:

df1['GROUP FORMAT' ] = (df1.merge(df2.assign(FORMAT=df2.FORMAT.str.upper()), 
                                 left_on='Size', right_on='FORMAT', how='left')
                           ['GROUP FORMAT_y']
                           .fillna(df1['GROUP FORMAT'])
                       )

输出:

   index Size GROUP FORMAT
0      1   AA           G1
1      2   BB           G2
2      3   CC      Unknown

推荐阅读