使用pandas合并时如何保持索引
我想合并两个数据DataFrames
,并保留第一帧的索引作为合并数据集上的索引。 但是,当我进行合并时,生成的DataFrame具有整数索引。 我怎样才能指定我想从左边的数据框保持索引?
In [4]: a = pd.DataFrame({'col1': {'a': 1, 'b': 2, 'c': 3}, 'to_merge_on': {'a': 1, 'b': 3, 'c': 4}}) In [5]: b = pd.DataFrame({'col2': {0: 1, 1: 2, 2: 3}, 'to_merge_on': {0: 1, 1: 3, 2: 5}}) In [6]: a Out[6]: col1 to_merge_on a 1 1 b 2 3 c 3 4 In [7]: b Out[7]: col2 to_merge_on 0 1 1 1 2 3 2 3 5 In [8]: a.merge(b, how='left') Out[8]: col1 to_merge_on col2 0 1 1 1.0 1 2 3 2.0 2 3 4 NaN In [9]: _.index Out[9]: Int64Index([0, 1, 2], dtype='int64')
编辑:切换到示例代码,可以很容易地复制
In [5]: a.reset_index().merge(b, how="left").set_index('index') Out[5]: col1 to_merge_on col2 index a 1 1 1 b 2 3 2 c 3 4 NaN
有一个非pd.merge解决scheme。 使用map
和set_index
In [1744]: a.assign(col2=a['to_merge_on'].map(b.set_index('to_merge_on')['col2'])) Out[1744]: col1 to_merge_on col2 a 1 1 1.0 b 2 3 2.0 c 3 4 NaN
而且,不会为索引引入虚拟index
名称。