追加熊猫数据框问题

时间:2020-09-04 14:18:19

标签: python pandas dataframe

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

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

查看以下图片。

这是第一个数据帧。 dataframe 1

这是第二个。 2nd dataframe

我通过追加得到的输出是 End result

我不明白什么地方出了错。

3 个答案:

答案 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

的问题中了解更多信息