我想合并两个DataFrames,并将第一帧的索引作为合并数据集的索引。但是,当我进行合并时,生成的 DataFrame 具有整数索引。如何指定要保留左侧数据框中的索引?
DataFrames
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
请注意,对于某些左合并操作,当anda之间有多个匹配时,您最终可能会得到比 in 更多的行。在这种情况下,您可能需要删除重复项。a``b
a
a``b