在合并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
|