这可能是一个比较基础的问题。假设我有两个数据框:
我想将数据框按照
>>> df1
id a
0 0 5.0
1 1 10.0
2 2 15.0
3 3 NaN
4 4 NaN
5 5 NaN
>>> df2
id a
0 0 NaN
1 1 NaN
2 2 NaN
3 3 20.0
4 4 25.0
5 5 30.0
我想将数据框按照
id
进行连接,使其看起来像这样:>>> df_joined
id a
0 0 5.0
1 1 10.0
2 2 15.0
3 3 20.0
4 4 25.0
5 5 30.0
到目前为止,我一直在进行左连接合并,例如df1.merge(df2, how = 'left', on = 'id)
。但这会导致重复的列(如下所示),需要通过填充NaN值,重命名列名,最后删除重复列来进行矫正。如果我要合并超过两个数据框架,这将变得特别繁琐。
# How do I better merge this so I don't have fill nans, rename, and drop the columns?
id a_x a_y
0 0 5.0 NaN
1 1 10.0 NaN
2 2 15.0 NaN
3 3 NaN 20.0
4 4 NaN 25.0
5 5 NaN 30.0
有没有更好的方法来完成这个任务?
combine_first
是基于位置的,但OP谈到了基于列id
来填充列a,在这里它起作用是因为id列和索引相同,并且两个数据框以相同的方式排序。 - Ben.Tcombine_first
即使id
与索引不同也可以工作。如果它们的顺序不同,则无法工作。 - jetvermillion