Python | DataFrame合并后处理重复index的方法

合并DataFrame的博客的2.1章节中,可以看到输出结果的index重复了,后续所有通过index的操作都会受影响。

重复index数据示例

1
2
3
4
5
6
7
import pandas as pd
df1=pd.DataFrame({'one':[1,2,3,4],
'two':[4,5,6,7]})
df2=pd.DataFrame({'one':[8,9,10,11],
'two':[12,13,14,15]})
df3=pd.concat([df1,df2])
print(df3)

输出为:

1
2
3
4
5
6
7
8
9
10

one two
0 1 4
1 2 5
2 3 6
3 4 7
0 8 12
1 9 13
2 10 14
3 11 15

可能导致的问题

若直接按照index删除行数,则会同时删除多行。

1
2
df3.drop(index=[0],inplace=True)
print(df3)

输出为:

1
2
3
4
5
6
7
8

one two
1 2 5
2 3 6
3 4 7
1 9 13
2 10 14
3 11 15

可以看到,删除了两行,但是预期是只删除第一行。

解决方法

应在合并DataFrame后重新设置index。

方法一

1
2
df3=df3.reset_index(drop=True)
print(df3)

输出为:

1
2
3
4
5
6
7
   one  two
0 2 5
1 3 6
2 4 7
3 9 13
4 10 14
5 11 15

方法二

1
2
3
df5=pd.concat([df1,df2])
df5.index=range(len(df5))
print(df5)

输出为:

1
2
3
4
5
6
7
8
9
   one  two
0 1 4
1 2 5
2 3 6
3 4 7
4 8 12
5 9 13
6 10 14
7 11 15