追加 pandas 数据框问题

我有两个数据框,有 2100 行 × 857 列。我想将第二个附加到第一个。

我用X_train_features = X_train_features.append(X_train_Specfeatures, ignore_index= True)
这个。但我得到的数据框不是 4200 行 x 857 列,而是 4200 行 x 1714 列。

看看下面的图片。

这是第一个数据框。

http://img3.mukewang.com/64b5eeae0001879310300421.jpg

这是第二个。

http://img.mukewang.com/64b5eebb00017af210230411.jpg

我通过附加得到的输出是

http://img3.mukewang.com/64b5eece0001503c12300420.jpg

我不明白出了什么问题。



人到中年有点甜
浏览 120回答 3
3回答

万千封印

事实上,您想要的是连接两个数据框。您可以使用 pd.concat()pd.concat([first_df,second_df],axis=0)

慕后森

合并两个数据框的常用方法是使用 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)

慕田峪7331174

也许你可以解决你的具体问题X_train_Specfeatures.columns = X_train_features.columns背景正如评论中提到的,当两个 dfs 的列标签不相同时,通常会发生这种情况。拿这两个dfsdf = 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  10  0  11  2  32  0  13  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    10  0.0  1.0  NaN  NaN1  2.0  3.0  NaN  NaN2  NaN  NaN  0.0  1.03  NaN  NaN  2.0  3.0请注意,即使列名打印相同,它们实际上是不同的值(一个 df0是整数,另一个是字符串)。因此 pandas 将它们解释为不同的列,并且由于第二个 df 没有第一列的值,因此它会填充NaN.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python