我有大数据框要合并以确保以多处理方式进行合并我决定使用索引。但在创建索引后,我得到了关键错误。
例如:
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']})
(Pdb) df1
A B
0 A0 B0
1 A1 B1
2 A2 B2
3 A3 B3
但第二个DataFrame:
df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'C': ['C1', 'C2', 'C3', 'C4']})
(Pdb) df2
A C
0 A0 C1
1 A1 C2
2 A2 C3
3 A3 C4
现在我为列A
为索引的数据框设置了索引。
df1.set_index('A', inplace=True)
df2.set_index('A', inplace=True)
(Pdb) df1
B
A
A0 B0
A1 B1
A2 B2
A3 B3
(Pdb) df2
C
A
A0 C1
A1 C2
A2 C3
A3 C4
现在当我进行合并时:
(Pdb) result = pd.merge(df1, df2, on='A')
*** KeyError: 'A'
但如果我这样做而没有创建索引合并,则会发生没有键错误。
(Pdb) df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']})
(Pdb) df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'C': ['C1', 'C2', 'C3', 'C4']})
(Pdb) result = pd.merge(df1, df2, on='A')
(Pdb) result
A B C
0 A0 B0 C1
1 A1 B1 C2
2 A2 B2 C3
3 A3 B3 C4
答案 0 :(得分:1)
如果您在索引上合并,则应同时:
merge
left_index = True
,right_index = True
参数merge
否则,您必须明确告知您的密钥使用key =
答案 1 :(得分:0)
当您指定on=A
时,您告诉Pandas您要使用A列进行合并。当您创建A索引时,它不再是框架中的列
您可以合并,然后将A作为索引,或将A作为索引,然后指定left_index=True
和right_index=True
。