python-连接两个数据框并越过行

时间:2020-05-20 19:14:19

标签: python pandas dataframe

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加入df3
df3 = pd.concat([df1, df2], axis=1)

但是我有500多行,这是错误的!

所以我用

df1["colD"] = df2["colD"]

我得到了同一行,但colD中的某些行是NaN

1 个答案:

答案 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