在特定列上加入2个Pandas数据框,占nan

时间:2018-11-23 11:37:55

标签: python pandas

我有两个带有X和Y列和行的pandas DataFrames dfAdfB

我需要在dfB上附加dfA,以创建dfC。我需要在dfAdfB中具有列名的列上追加。

此外,如果dfA中的列名未出现在dfB中,则dfC应该包含Nan值。


为简化起见,

dfA外观

    c1   c2   c3
0  AX1  AX2  AX3
1  AY1  AY2  AY3
2  AZ1  AZ2  AZ3

dfB看起来像

    c1   c2   c4
0  BX1  BX2  BX3
1  BY1  BY2  BY3
2  BZ1  BZ2  BZ3

dfC应该看起来像

    c1   c2   c3
0  AX1  AX2  AX3
1  AY1  AY2  AY3
2  AZ1  AZ2  AZ3
3  BX1  BX2  Nan
4  BY1  BY2  Nan
5  BZ1  BZ2  Nan     

我该怎么做?

2 个答案:

答案 0 :(得分:1)

尝试一下

pd.concat([dfA,dfB[['c1','c2']]])

避免对列进行硬编码

尝试一下

inter=list(set(dfA.columns)&set(dfB.columns))
print pd.concat([dfA,dfB[inter]])

答案 1 :(得分:1)

使用concat并过滤dfA的列:

df = pd.concat([dfA, dfB])[dfA.columns]

或按intersection过滤列:

cols = dfA.columns.intersection(dfB.columns)
df = pd.concat([dfA, dfB[cols]])