pandas concat ignore_index 無效,依然保留索引

假設如今有兩個數據:

df1
0 1 2 3
a 5.1 4.7 4.9 2.4
b 3.0 3.2 3.0 6.2
c 4.5 1.3 2.7 1.8
d 1.4 1.9 1.4 0.5
e 0.2 0.2 0.2 3.5
newdf
0 1 2 3
0 10 45 13 1
1 47 15 46 42
2 38 26 20 11
3 9 16 44 23
4 45 6 24 35

 使用concat合併,設置參數axis=1ignore_index=True

pd.concat([df1,newdf],axis=1,ignore_index=True)
0 1 2 3 4 5 6 7
a 5.1 4.7 4.9 2.4 NaN NaN NaN NaN
b 3.0 3.2 3.0 6.2 NaN NaN NaN NaN
c 4.5 1.3 2.7 1.8 NaN NaN NaN NaN
d 1.4 1.9 1.4 0.5 NaN NaN NaN NaN
e 0.2 0.2 0.2 3.5 NaN NaN NaN NaN
0 NaN NaN NaN NaN 10.0 45.0 13.0 1.0
1 NaN NaN NaN NaN 47.0 15.0 46.0 42.0
2 NaN NaN NaN NaN 38.0 26.0 20.0 11.0
3 NaN NaN NaN NaN 9.0 16.0 44.0 23.0
4 NaN NaN NaN NaN 45.0 6.0 24.0 35.0

可是參數設置爲axis=0的時候有效,列表成功合併,並且index的確被忽略了。

pd.concat([df1,newdf],axis=0,ignore_index=True)
0   1   2   3
0 5.1 4.7 4.9 2.4
1 3.0 3.2 3.0 6.2
2 4.5 1.3 2.7 1.8
3 1.4 1.9 1.4 0.5
4 0.2 0.2 0.2 3.5
5 10.0 45.0 13.0 1.0
6 47.0 15.0 46.0 42.0
7 38.0 26.0 20.0 11.0
8 9.0 16.0 44.0 23.0
9 45.0 6.0 24.0 35.0

最後的解決方法是先刪除索引,再進行合併。。。

df1.reset_index(drop=True, inplace=True)
df2.reset_index(drop=True, inplace=True)

 緣由

ignore_index = True並不意味忽略index而後鏈接,而是指鏈接後再從新賦值index(len(index))。從上面能夠看出若是兩個df有重疊的索引仍是能夠自動合併的。

原解釋code

ignore_index = True'忽略',表示未在鏈接軸上對齊。它只是按它們傳遞的順序將它們粘貼在一塊兒,而後從新分配實際索引的範圍(例如,範圍(len(索引))),以便加入非重疊索引之間的差別(假設示例中的軸= 1)是,使用ignore_index = False(默認值),您得到索引的concat,並使用ignore_index = True得到範圍。

參考:
pandas concat ignore_index doesn't work索引

相關文章
相關標籤/搜索