我有兩個非常不同的具有唯一列名的熊貓資料框。我想把它們一個一個地堆疊起來。不需要像“聯合”或“交叉點”這樣的東西。就像“復制粘貼”一個下一個。而且我也不想丟失任何列名。
DF1:
Col1
1 A C
2 B D
3 X Y
DF2:
Col2 Col3 Col4 Col5
1 a c x t
2 b d y j
3 b e z k
我嘗試使用 pd.concat([df1,df2], axis=0, ignore_index = True) 但這導致了這樣的事情:
Col1
1 A C Nan Nan Nan Nan
2 B D Nan Nan Nan Nan
3 X Y Nan Nan Nan Nan
4 Nan Nan Col2 Col3 Col4 Col5
5 Nan Nan a c x t
6 Nan Nan b b y j
7 Nan Nan b e z k
預期結果:
Col1
1 A C Nan Nan
2 B D Nan Nan
3 X Y Nan Nan
4 Col2 Col3 Col4 Col5
5 a c x t
6 b b y j
7 b e z k
原始 DF
DF1

DF2

uj5u.com熱心網友回復:
Pandas 不允許多個未命名的列(即以空字串作為名稱的列),因為列名必須是唯一的。也就是說,我認為這接近您想要的結果。
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'Col1':[*'ABX'],'':[*'CDY']})
df2 = pd.DataFrame({'Col2':[*'abb'],'Col3':[*'cde'],'Col4':[*'xyz'],'Col5':[*'tjk']})
mat1 = np.vstack([df1.columns,df1.to_numpy()])
mat2 = np.vstack([df2.columns,df2.to_numpy()])
df = pd.concat([pd.DataFrame(mat1),pd.DataFrame(mat2)])
結果資料框df是
0 1 2 3
0 Col1 NaN NaN
1 A C NaN NaN
2 B D NaN NaN
3 X Y NaN NaN
0 Col2 Col3 Col4 Col5
1 a c x t
2 b d y j
3 b e z k
uj5u.com熱心網友回復:
這是一個相當奇怪的重塑。您不能直接將標題作為行移動,但一個技巧是reset_index轉置。
對于concat,留出列標題并將其放回:
cols = df1.columns
(pd.concat([df1.set_axis(range(df1.shape[1]), axis=1),
df2.T.reset_index().T], ignore_index=True)
.rename(columns=dict(enumerate(cols))))
輸出:
Col1 2 3
0 A C NaN NaN
1 B D NaN NaN
2 X Y NaN NaN
3 Col2 Col3 Col4 Col5
4 a c x t
5 b d y j
6 b e z k
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452522.html
