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.
添加回答
举报