python - Pandas 合并不保留索引?

标签 python pandas

<分区>

我有这两个数据框:

left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                     'B': ['B0', 'B1', 'B2', 'B3'],
                     'key': ['K0', 'K1', 'K0', 'K1']}, 
                    index = [9,10,11,12])

right = pd.DataFrame({'C': ['C0', 'C1'],
                      'key': ['K0', 'K1']})

当我运行 pd.merge(left, right, on='key')我得到一个带有索引的新数据框:

    A   B key   C
0  A0  B0  K0  C0
1  A2  B2  K0  C0
2  A1  B1  K1  C1
3  A3  B3  K1  C1

我想得到的是这个

     A   B key   C
9   A0  B0  K0  C0
11  A2  B2  K0  C0
10  A1  B1  K1  C1
12  A3  B3  K1  C1

我可以通过 pd.merge(left, right, on='key', right_index = True) 得到它但我觉得这与其说是巧合,不如说是巧合。

编辑

所以解决方案是这样的:

left.merge(right.set_index("key"), left_on="key", right_index = True)

最佳答案

你也可以这样做:

left.reset_index().merge(right, on='key').set_index('index')

参见此处:How to keep index when using pandas merge

我必须承认,我不完全确定 pandas merge 究竟何时保留索引,何时不保留索引。我很乐意对此有更多的了解!

关于python - Pandas 合并不保留索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34794957/

相关文章:

python - 用于搜索的 Pandas 列索引?

javascript - Python 相当于 JavaScript 的 Object.create()

python - 在两个表之间绘制箭头(作为图像)(Python)

python - 如何在Python中将结构体传递给Linux设备节点?

python - Pandas DatetimeIndex 截断错误

python - Pandas :拆分字符串,并计算值?

python - kivy如何使用python在按钮上显示图像

python - 方法分配和对象

python - 从具有不同长度的列表生成数据框

python - 使用 Python 字典映射 DataFrame 列时出现类型错误