【发布时间】:2022-01-24 13:52:11
【问题描述】:
我有两个数据框定义如下:
dataframe1 = pd.DataFrame( [["123", "CTR", "ABC", "DEF", "GHI"],
["123", "RIGHT", "ABC", "DEF", "GHI"],
["123", "LEFT", "ABC", "DEF", "GHI"],
["456", "CTR", "JKL", "MNO", "PQR"],
["456", "RIGHT", "JKL", "MNO", "PQR"],
["456", "LEFT", "JKL", "MNO", "PQR"]],
columns=["ID","LOCATION",
"Attr1", "Attr2", "Attr3"],
)
dataframe2 = pd.DataFrame( [["1", "A", "123"],
["1", "B", "123"],
["1", "C", "123"],
["2", "A", "456"],
["2", "B", "456"],
["2", "C", "456"]],
columns=["ROW","LOCATION","ID"],
)
我想根据 ID 列和 Location 列的值将这两个数据框合并为一个数据框。在位置列中,A 等于 CTR,B 等于 RIGHT,C 等于 LEFT。我正在寻找的结果是这样的:
ID ROW LOCATION Attr1 Attr2 Attr3
0 123 1 A ABC DEF GHI
1 123 1 B ABC DEF GHI
2 123 1 C ABC DEF GHI
3 456 2 A JKL MNO PQR
4 456 2 B JKL MNO PQR
5 456 2 C JKL MNO PQR
使用 pandas.merge() 我可以使用一列或多列合并数据帧,但由于位置列值不匹配,我得到一个 KeyError。
pandas.merge() 是正确的函数吗?如何使用它定义匹配的列值?
【问题讨论】: