python - 在 Python 中使用 Pandas 在两个不同的数据帧之间建立索引和匹配行
问题描述
这里的第一个问题,如果我需要进一步详细说明,请告诉我。本质上,我有两个数据框,我需要索引/匹配(基本上是 Excel 中的 vLookUp),但无法让它为我的一生工作。
我有两个数据框。
df_1 = pd.DataFrame([['55555', '975 8th Avenue', ""],
['44444', '900 Market St', ""],
['54444', '975 7th Avenue', ""],
['44445', '901 Market St', ""],
['33333', '975 4th Avenue', ""],
['35555', '975 8th Avenue', ""]], columns=['storezipCode', 'streetAddress', 'storeLoc'])
和
df_2 = pd.DataFrame([['New York', '53333'],
['New York', '54444'],
['New York', '55555'],
['San Francisco', '44443'],
['San Francisco', '44444'],
['San Francisco', '44445'],
['Chicago', '33333'],
['Chicago', '34444'],
['Chicago', '35555']], columns=['storeLoc', 'storezipCode'])
我想要完成的是从 df_2 中提取“storeLoc”并将其与 df_1 和 df_2 中的“storezipCode”进行匹配。
实际上,这两个数据帧在行/列方面远不相等,所以我认为这让我很头疼。有谁知道一个简单的解决方案?在 Excel 中这将是小菜一碟,所以我觉得我只是忽略了一些东西。
解决方案
尝试map
并set_index
:
df_1['storeLoc'] = df_1.storezipCode.map(df_2.set_index('storezipCode')['storeLoc'])
print(df_1)
输出:
storezipCode streetAddress storeLoc
0 55555 975 8th Avenue New York
1 44444 900 Market St San Francisco
2 54444 975 7th Avenue New York
3 44445 901 Market St San Francisco
4 33333 975 4th Avenue Chicago
5 35555 975 8th Avenue Chicago
推荐阅读
- karate - 尝试在 KARATE DSL 中进行后调用时如何解决“错误 com.intuit.karate - http 请求失败:null”?
- python-3.x - python程序找出音频文件中每个单词的开始和结束时间
- cluster-analysis - 移动设备上的聚类行为错误
- javascript - 如何使用 WebRTC 修复 js 中的 element.videoHeight?
- mariadb - 如何使用 Galera Cluster 在单个 VM 中设置多个 mariadb?
- javascript - 嵌套的异步承诺:如何知道它们何时全部解决?
- java - DateTimeFormatter 创建模式
- node.js - 如何使用 Nodejs 和 PassportJS 以及 mongodb 作为数据库来限制每个用户的会话数?
- android - 使用 POST 进行改造会失败,但仍会上传文件
- node.js - Firebase 云功能部署错误“加载用户代码时功能失败”,错误消息为空