Pandas:创建索引

时间:2016-11-20 01:33:30

标签: python pandas dataframe

我有大数据框要合并以确保以多处理方式进行合并我决定使用索引。但在创建索引后,我得到了关键错误。

例如:

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

2 个答案:

答案 0 :(得分:1)

如果您在索引上合并,则应同时:

  • 未在merge
  • 中指定密钥
  • 使用left_index = Trueright_index = True参数merge

否则,您必须明确告知您的密钥使用key =

答案 1 :(得分:0)

当您指定on=A时,您告诉Pandas您要使用A列进行合并。当您创建A索引时,它不再是框架中的列 您可以合并,然后将A作为索引,或将A作为索引,然后指定left_index=Trueright_index=True