df1有4列和500行
id colA colB colC
0 1 4 1 1
1 2 5 2 3
2 5 2 4 2
3 6 3 3 1
.
.
df2具有1列和500行(无NA)
colD
0 Yes
1 No
2 No
3 No
.
.
我想得到
id colA colB colC colD
0 1 4 1 1 Yes
1 2 5 2 3 No
2 5 2 4 2 No
3 6 3 3 1 No
.
.
我通过
将df1和df2加入df3df3 = pd.concat([df1, df2], axis=1)
但是我有500多行,这是错误的!
所以我用
df1["colD"] = df2["colD"]
我得到了同一行,但colD中的某些行是NaN
答案 0 :(得分:1)
concat
按索引对齐数据框。因此,如果您的两个数据框具有不同的索引,则结果将具有500多个行。例如,如果您的df2
具有索引[1,2,3,4]
而不是如图所示的[0,1,2,3]
,则
pd.concat((df1,df2), axis=1)
会给你
id colA colB colC colD
0 1.0 4.0 1.0 1.0 NaN
1 2.0 5.0 2.0 3.0 Yes
2 5.0 2.0 4.0 2.0 No
3 6.0 3.0 3.0 1.0 No
4 NaN NaN NaN NaN No
如果您确定len(df1)==len(df2)
并且对索引不确定,那么最简单的方法是将numpy数组传递给column Assignmet,因此:
df1['colD'] = df2['colD'].values
,然后df1
变为:
id colA colB colC colD
0 1 4 1 1 Yes
1 2 5 2 3 No
2 5 2 4 2 No
3 6 3 3 1 No