3 回答

TA貢獻1802條經驗 獲得超5個贊
合并兩個數據框的常用方法是使用 pandas .concat() 函數。然后,您必須指定 axis = 0 以根據列的標簽合并數據框:
df1=pd.DataFrame({"a":[1,2,3],"b":[4,5,6]})
df2=pd.DataFrame({"a":[7,8,9],"b":[10,11,12]})
pd.concat([df1,df2],axis=0)

TA貢獻1828條經驗 獲得超13個贊
也許你可以解決你的具體問題
X_train_Specfeatures.columns = X_train_features.columns
背景
正如評論中提到的,當兩個 dfs 的列標簽不相同時,通常會發生這種情況。
拿這兩個dfs
df = pd.DataFrame([[0, 1], [2, 3]])
df2 = df.copy()
如果您append(或concat,都一樣),您將得到 4x2 df,因為列標簽完全相同。
# df_out = df.append(df2, ignore_index=True)
df_out = pd.concat([df, df2])
print(df_out)
? ?0? 1
0? 0? 1
1? 2? 3
2? 0? 1
3? 2? 3
但是,如果您更改一個 df 中的列名稱,您將得到一個 4x4 df,因為 pandas 會嘗試對齊列標簽。
df2.columns = ['0', '1']
# df_out = df.append(df2, ignore_index=True)
df_out = pd.concat([df, df2], ignore_index=True)
print(df_out)
? ? ?0? ? 1? ? 0? ? 1
0? 0.0? 1.0? NaN? NaN
1? 2.0? 3.0? NaN? NaN
2? NaN? NaN? 0.0? 1.0
3? NaN? NaN? 2.0? 3.0
請注意,即使列名打印相同,它們實際上是不同的值(一個 df0是整數,另一個是字符串)。因此 pandas 將它們解釋為不同的列,并且由于第二個 df 沒有第一列的值,因此它會填充NaN.
添加回答
舉報