python - 带前缀的熊猫 loc
问题描述
我有两个数据帧,我希望一个数据帧中的每一行通过某个列(包含一些 id)定位另一个数据帧中的匹配行。我想检查 df1 中的行并使用 loc 函数在 df2 中找到匹配的行。
问题是 df2 中的一些 id 有一些额外的信息,除了 id 本身。
例如:df1 的 id:1234,df2 的 id:1234-KF
例如,如何使用 loc 找到此 id?loc 可以以某种方式仅通过前缀匹配吗?
解决方案
可以使用例如正则表达式(或子字符串)删除额外信息:
import pandas as pd
import re
df1 = pd.DataFrame({
'id': ['123', '124', '125'],
'data': ['A', 'B', 'C']
})
df2 = pd.DataFrame({
'id': ['123-AA', '124-AA', '125-AA'],
'data': ['1', '2', '3']
})
df2.loc[df2.id.apply(lambda s : re.sub("[^0-9]", "", s)) == df1.id]
推荐阅读
- json - 处理非常大的 JSON 数据集?
- wpf - 为什么在 WPF 中使用依赖属性如果我使用普通的 CLR 属性会有什么影响?
- typescript - 为什么 Typescript 规范不包含有关布尔和数字文字类型的任何内容?
- jquery - 下载选项在 iOS 设备中不起作用
- ios - iOS Today Extension 透明背景色
- javascript - 日期或文本类型的 HTML 输入在 SVG foreignObject 中不起作用
- python - 通过 Try 和 except 分配列表值
- backbone.js - 使用超级时咖啡脚本中的意外其他
- node.js - 为什么 express.Router() 返回一个函数而不是一个对象?
- javascript - Vue.js 的 ckeditor 组件中的 insertText()