首页 > 解决方案 > 在 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 中这将是小菜一碟,所以我觉得我只是忽略了一些东西。

标签: pythonpandasdataframe

解决方案


尝试mapset_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

推荐阅读