我想合并两个dataframe,并保持索引从第一帧作为合并数据集上的索引。然而,当我进行合并时,结果的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')
编辑:切换到示例代码,可以很容易地复制
我想我有别的办法了。我加入了左表的索引值和右表的列值基于左表的索引。我所做的是一个正常的合并:
First10ReviewsJoined = pd.merge(First10Reviews, df, left_index=True, right_on='Line Number')
然后,我从合并表中检索了新的索引号,并将它们放在名为“情绪线号码”的新列中:
First10ReviewsJoined['Sentiment Line Number']= First10ReviewsJoined.index.tolist()
然后我手动将索引设置回原始的,基于预先存在的名为Line Number的列(我从left table index连接的列值)的左表索引:
First10ReviewsJoined.set_index('Line Number', inplace=True)
然后删除Line Number的索引名,使其保持空白:
First10ReviewsJoined.index.name = None
也许有点hack,但似乎工作得很好,相对简单。此外,我猜这也降低了重复/弄乱数据的风险。希望这些都讲得通。
我想我有别的办法了。我加入了左表的索引值和右表的列值基于左表的索引。我所做的是一个正常的合并:
First10ReviewsJoined = pd.merge(First10Reviews, df, left_index=True, right_on='Line Number')
然后,我从合并表中检索了新的索引号,并将它们放在名为“情绪线号码”的新列中:
First10ReviewsJoined['Sentiment Line Number']= First10ReviewsJoined.index.tolist()
然后我手动将索引设置回原始的,基于预先存在的名为Line Number的列(我从left table index连接的列值)的左表索引:
First10ReviewsJoined.set_index('Line Number', inplace=True)
然后删除Line Number的索引名,使其保持空白:
First10ReviewsJoined.index.name = None
也许有点hack,但似乎工作得很好,相对简单。此外,我猜这也降低了重复/弄乱数据的风险。希望这些都讲得通。