如何合并两个长度不同的熊猫数据框,如下所示:
df1 = Index block_id Ut_rec_0
0 0 7
1 1 10
2 2 2
3 3 0
4 4 10
5 5 3
6 6 6
7 7 9
df2 = Index block_id Ut_rec_1
0 0 3
2 2 5
3 3 5
5 5 9
7 7 4
result = Index block_id Ut_rec_0 Ut_rec_1
0 0 7 3
1 1 10 NaN
2 2 2 5
3 3 0 5
4 4 10 NaN
5 5 3 9
6 6 6 NaN
7 7 9 4
我已经尝试过类似的方法,但是没有用:
df_result = pd.concat([df1, df2], join_axes=[df1['block_id']])
我已经尝试过: df_result = pd.concat([df1,df2,axis = 1) 但是结果是:
Index block_id Ut_rec_0 Index block_id Ut_rec_1
0 0 7 0.0 0.0 3.0
1 1 10 1.0 2.0 5.0
2 2 2 2.0 3.0 5.0
3 3 0 3.0 5.0 9.0
4 4 10 4.0 7.0 4.0
5 5 3 NaN NaN NaN
6 6 6 NaN NaN NaN
7 7 9 NaN NaN NaN
答案 0 :(得分:0)
就像@Wen所说的,最好将concat
与axis
一起使用1
,就像下面的代码一样:
pd.concat([df1, df2],axis=1)
答案 1 :(得分:0)
pandas.DataFrame.join
可以基于列数据(或索引)的重叠来“联接”数据帧。这样的事情可能会为您工作:
df1.join(df2.set_index('block_id'), on='block_id')
答案 2 :(得分:0)
您需要使用外部联接的pd.merge
pd.merge(df1,df2,on=['Index','block_id'],how='outer')
#[out]
#Index block_id Ut_rec_0 Ut_rec_1
#0 0 7 3.0
#1 1 10 NaN
#2 2 2 5.0
#3 3 0 5.0
#4 4 10 NaN
#5 5 3 9.0
#6 6 6 NaN
#7 7 9 4.0