Merge several dataframes together
我有多个(n)数据帧,行长度可变,每个数据帧有3列。我只需要每个数据帧的第一列,所以我使用df.drop删除了其他列。我想将它们合并到一个具有n列的数据帧中。我用pd.concat合并。
1 2 3 4 5 6 7 | df1.drop(columns=['col2' ,'col3']).to_csv('df1.csv', sep=';') df2.drop(columns=['col2', 'col3']).to_csv('df2.csv', sep=';') pd.concat([pd.concat([df1.drop(columns=['col2','col3']), df2.drop(columns=['col2','col3'])] ,axis=1)])\ .to_csv('merged.csv', sep=';') |
它将以下输出作为csv文件:
1 2 3 4 5 6 7 8 9 | col1 (df1) col1 (df1) 0 0.0 1 0.055 2 0.096 3 0.131 2074 70.997 2075 71.002 2076 71.065 2077 71.101 |
号
所以你看到它只是把列作为行添加。例如,第3行在第2列中为空。第1列第2074行为空。我以为axis=1可以解决这个问题,但事实并非如此。
预期输出:
1 2 3 4 5 | col1 (df1) col1 (df1) 0 0.0 70.997 1 0.055 71.002 2 0.096 71.065 3 0.131 71.101 |
如果我尝试
将df2的索引更改为与df1相同
1 2 3 4 5 6 7 8 9 | df2.index=df1.index df1['col1(df2)']=df2.col1 df1.rename(columns={'col1':'col1(df1)'}) Out[7]: col1(df1) col1(df2) 0 0.000 70.997 1 0.055 71.002 2 0.096 71.065 3 0.130 71.101 |
号
在
1 2 3 4 5 6 7 8 9 | df3 = pd.concat([df1['col1'].reset_index(drop=True), df2['col1'].reset_index(drop=True)], axis=1) df3.columns = ['col1 (df1)','col1 (df2)'] print (df3) col1 (df1) col1 (df2) 0 0.000 70.997 1 0.055 71.002 2 0.096 71.065 3 0.131 71.101 |