gpt4 book ai didi

python - 使用配对索引键连接两个数据帧

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:42 25 4
gpt4 key购买 nike

我有两个数据框,我从中确定了要合并到一个数据框中的匹配候选者。每个原始数据框都有自己的索引,索引彼此不对应(也没有其他列可以合并)。但是,我有一组成对的索引,指示应将哪些单独的记录对连接在一起。我一直找不到此类合并的任何资源 https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html .

我想出的方法既笨重又缓慢,我相信有更好的方法。

import numpy as np
import pandas as pd

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']},
index=[4, 5, 6, 7])

# The array of paired index keys
matches = np.array([(3,4),
(1,5),
(0,6),
(2,7)])

keys = {i[0]: i[1] for i in matches}

merged = pd.DataFrame()
for key, value in keys.items():
left = df1.loc[[key]].reset_index()
right = df2.loc[[value]].reset_index()

together = pd.concat([left, right], axis = 1)
merged = merged.append(together)

最佳答案

您可以这样做,使用 reindex 根据匹配对数据帧进行排序,然后使用 reset_indexpd.concat 数据帧:

d1 = df1.reindex(matches[:,0]).reset_index()
d2 = df2.reindex(matches[:,1]).reset_index()

pd.concat([d1,d2], axis=1)

输出:

   index   A   B   C   D  index   A   B   C   D
0 3 A3 B3 C3 D3 4 A4 B4 C4 D4
1 1 A1 B1 C1 D1 5 A5 B5 C5 D5
2 0 A0 B0 C0 D0 6 A6 B6 C6 D6
3 2 A2 B2 C2 D2 7 A7 B7 C7 D7

关于python - 使用配对索引键连接两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54559596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com