adi*_*din 1 python merge row append pandas
我有一个如下所示的数据框(df_original):
Year | Thing1 | Thing2
2010 | 748 | 461
2011 | 246 | 493
2012 | 394 | 731
Run Code Online (Sandbox Code Playgroud)
我需要偶尔追加新数据。有时,我得到的数据将具有相同数量的标头。有时,我不会。我也不能指望标题的顺序是相同的。
附加类似以下内容就可以了:
Year | Thing1 | Thing2
2013 | 561 | 197
Run Code Online (Sandbox Code Playgroud)
但是,我也可以收到这个,一个新东西(df_new):
Year | Thing1 | Thing2 | Thing3
2013 | 561 | 197 | 369
Run Code Online (Sandbox Code Playgroud)
编辑:我也可以接收这个数据帧来追加,是否会以不同的顺序连接标题?
Year | Thing1 | Thing3 | Thing2
2013 | 561 | 369 | 197
Run Code Online (Sandbox Code Playgroud)
所需的输出如下:
Year | Thing1 | Thing2 | Thing3
2010 | 748 | 461 | 0
2011 | 246 | 493 | 0
2012 | 394 | 731 | 0
2013 | 561 | 197 | 369
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到这个结果?
我认为pd.concat([df_original, df_new], join = 'outer', axis = 1, sort = False)可能会因为这篇文章而这样做,但它将新数据放在 df_original 中原始数据的右侧。
简单的连锁pd.concat有fillna(0):
pd.concat([df, df_new], sort=False).fillna(0)
Run Code Online (Sandbox Code Playgroud)
输出
Year Thing1 Thing2 Thing3
0 2010 748 461 0.0
1 2011 246 493 0.0
2 2012 394 731 0.0
0 2013 561 197 369.0
Run Code Online (Sandbox Code Playgroud)
如果要重置索引,请使用ignore_index:
pd.concat([df, df_new], sort=False, ignore_index=True).fillna(0)
Run Code Online (Sandbox Code Playgroud)
输出
Year Thing1 Thing2 Thing3
0 2010 748 461 0.0
1 2011 246 493 0.0
2 2012 394 731 0.0
3 2013 561 197 369.0
Run Code Online (Sandbox Code Playgroud)