使用填充空单元格合并Pandas

juud5qan  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(337)

我试图根据一个键合并/连接pandas中的两个表,但其中一些表在第二个表中不存在。这两个表看起来有点像这样:

ID ATTR1 ATTR2
A1 2000 30
A2 300 12
A3 45 22

ID ATT12SUMCOND
A1 2030 
A2 312

现在第二个表中不存在键值a3,我仍然需要将这两个表连接起来,类似于:

ID ATTR1 ATTR2 ATTR12COND
A1 2000 30   2030 
A2 300 12   312 
A3 45 22    0

我如何做到这一点?

uqcuzwp8

uqcuzwp81#

你可以用 pandas' merge 方法,然后替换 NaN 带0的值如下所示-

df = pd.merge(df1, df2, how='left', on='ID').fillna({'ATTR12COND':0})

如果您需要更换所有 NaN 如果列为0,则可以更改 fillna 如下-

df = pd.merge(df1, df2, how='left', on='ID').fillna(0)
qc6wkl3g

qc6wkl3g2#

如果新aded列中没有问题,请在 DataFrame.merge 通过 DataFrame.fillna :

df = df1.merge(df2, on='ID', how='left').fillna({'ATT12SUMCOND':0})
print (df)
   ID  ATTR1  ATTR2  ATT12SUMCOND
0  A1   2000     30        2030.0
1  A2    300     12         312.0
2  A3     45     22           0.0

或使用 DataFrame.join 具有 DataFrame.reindex 对于整数列:

df = df1.join(df2.set_index('ID').reindex(df1['ID'], fill_value=0), on='ID')
print (df)
   ID  ATTR1  ATTR2  ATT12SUMCOND
0  A1   2000     30          2030
1  A2    300     12           312
2  A3     45     22             0

相关问题