【问题标题】:Pandas merge does not keep index?熊猫合并不保留索引?
【发布时间】:2016-06-06 17:48:54
【问题描述】:

我有这两个数据框:

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') 时,我得到一个带有 new 索引的新数据框:

    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)

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您也可以这样做:

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

    请看这里:How to keep index when using pandas merge

    我必须承认,我不完全确定什么时候 pandas merge 会保留索引,什么时候不保留。我希望对此有所了解!

    【讨论】:

      猜你喜欢
      • 2018-01-07
      • 1970-01-01
      • 2015-02-01
      • 2020-03-11
      • 2017-02-13
      • 2018-02-02
      • 2021-03-01
      • 2012-11-14
      • 2021-09-01
      相关资源
      最近更新 更多