python-3.x - 以不区分大小写的方式映射两个数据帧(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
但是,如果可能的话,我宁愿不复制和删除任何列。是否可以以不区分大小写的方式映射两个数据帧?
解决方案
尝试全部转换为大写,然后合并:
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
推荐阅读
- typescript - TypeScript - 非数组对象的定义/接口
- mysql - 错误 1045 使用密码是并从 wampserver 恢复数据
- c# - 编码的 UI:使用数据源而不登录网站
- android - Vuforia 在 Android Studio 中用 3D 模型替换茶壶
- c++ - 即使在我为我的应用程序授予管理员权限后,也无法从 Windows 系统复制目录
- sharepoint - Sharepoint - 工作流程不会从另一个列表开始
- java - Java 8 流。将两个参数传递给在 forEach 中调用的方法
- android - react-native-track-player 通知区域播放器 UI
- autodesk-forge - 混凝土对象内钢筋的对象选择错误
- javascript - 从javascript中的键和字符串值获取objectId