【发布时间】:2017-11-27 03:23:59
【问题描述】:
我正在尝试合并两个 Pandas DataFrames,其中(可能)有一些重复的记录。合并按预期工作,但不幸的是,它似乎重置了索引。考虑这个简单的例子:
import pandas as pd
import numpy as np
index = np.arange(10,15)
data = np.arange(10,15)
df1 = pd.DataFrame({'data':data}, index=index)
index = np.arange(12,17)
data = np.arange(12,17)
df2 = pd.DataFrame({'data':data}, index=index)
df3 = df1.merge(df2, how='outer')
这会导致:
# df1: df2: df3:
# ------ # ------ # ------
data data data
10 10 12 12 0 10
11 11 13 13 1 11
12 12 14 14 2 12
13 13 15 15 3 13
14 14 16 16 4 14
5 15
6 16
所以df1 (10-14) 和df2 (12-16) 中的索引已被合并df3 中的(0-6) 替换。这种行为有合理的解释吗?为什么df3 (10-16) 中没有索引?
唯一的解决方法似乎是用.reset_index() 重置df1 和df2 中的索引,进行合并,然后用df3 再次设置索引df3.set_index('index'),这确实会导致:
In [97]: df3.index
Out[97]: Int64Index([10, 11, 12, 13, 14, 15, 16], dtype='int64', name='index')
有没有办法在不重置和重新设置索引的情况下得到这个结果?
【问题讨论】:
标签: python python-3.x pandas merge