我有两个具有2100行×857列的数据帧。我想将第二个附加到第一个。
我使用X_train_features = X_train_features.append(X_train_Specfeatures, ignore_index= True)
为了这。但是,我没有得到4200行x 1714列的数据框,而是得到了4200行x 857列。
查看以下图片。
我不明白什么地方出了错。
答案 0 :(得分:2)
事实上,您想要连接两个数据帧。
您可以使用pd.concat()
pd.concat([first_df,second_df],axis=0)
答案 1 :(得分:1)
合并两个数据框的通常方法是使用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)
答案 2 :(得分:1)
也许您可以通过以下方式解决您的特定问题
df = pd.DataFrame([[0, 1], [2, 3]])
df2 = df.copy()
背景
如评论中所述,通常在两个df的列标签都不相同时发生。
接受这两个dfs
append
如果您concat
(或# 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
都一样),则由于列标签完全相同,您将获得4x2 df。
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
但是,如果在一个df中更改列名称,则将获得4x4 df,因为pandas试图对齐列标签。
0
请注意,即使列名打印相同,但实际上它们是不同的值(一个df NaN
是一个整数,另一个是字符串)。因此,pandas会将它们解释为不同的列,并且由于第二个df的第一列没有值,因此它将填充{{1}}。
您可以在有关Pandas Merging 101
的问题中了解更多信息