如果两个数据框具有相同的列名,则连接将按您的预期工作。所以第一个想法是将第二个数据框重命名为df2.columns = df1.columns。然后串联应该起作用。这里的问题是第二个数据框的列对我来说看起来像是有效数据,这会丢失。
这是保存这一行的技巧。
df2.loc[-1] = df2.columns
df2 = df2.sort_index().reset_index(drop=True)
df2.columns = df1.columns
pd.concat([df1, df2], ignore_index=True)
应该这样做。
示例
这是一个小例子。我认为这符合您的问题。
df1 = pd.DataFrame({'a':[1,2,3,4], 'b':[1,2,3,4]})
>>> df1
a b
0 1 1
1 2 2
2 3 3
3 4 4
df2 = pd.DataFrame({'1':[1,2,3,4], '2':[1,2,3,4]})
>>> df1
1 2 # << valid data here
0 1 1
1 2 2
2 3 3
3 4 4
df2.loc[-1] = df2.columns
df2 = df2.sort_index().reset_index(drop=True)
df2.columns = df1.columns
df = pd.concat([df1, df2], ignore_index=True)
>>> df
a b
0 1 1
1 2 2
2 3 3
3 4 4
4 1 2 # this data was saved
5 1 1
6 2 2
7 3 3
8 4 4
编辑
如果你有一个DataFrames列表,因为有多个页面,你可以循环遍历这个列表:
# df_list = [df1, ... dfn]
for i, item in enumerate(df_list[1:], start=1):
df_temp = item
df_temp.loc[-1] = df_temp.columns
df_temp = df_temp.sort_index().reset_index(drop=True)
df_temp.columns = df_list[0].columns
df_list[i] = df_temp
final_df = pd.concat(df_list, ignore_index=True)