【发布时间】:2020-01-05 06:05:10
【问题描述】:
我有两个如下所示的数据框
op1 = pd.DataFrame({
'subject_id':[1,1,1,1,1,1],
'date' : ['1/1/2017','1/2/2017','1/3/2017','1/4/2017','1/5/2017','1/6/2017'],
'val' :[5,10,5,16,26,6]
})
op2 = pd.DataFrame({
'subject_id':[1,1,1,1,1,1,1],
'date' : ['1/1/2017','1/2/2017','1/3/2017','1/4/2017','1/5/2017','1/6/2017','1/7/2017'],
'val' :[5,1,15,6,2,6,8]
})
我想从op2(op1 中不存在)复制记录并将其放入最终数据帧d。因此,op1 中的 val 记录的 NaNs 由来自 op2 记录的 val 填充。所以我想合并记录where val is NaN。这是我尝试过的,但它不起作用
d = op1.merge(op2, on = ['subject_id','date'],how='outer')
d[d['val_x'].isna()]['val_x'] = d['val_y']
我希望我的输出如下所示
【问题讨论】:
-
以下两个答案都非常好。基于我对 Python 的有限熟练度,我标记了简单而简短的答案。我真的不知道这两个答案的复杂性。所以我只能标记一个。除非作者自己希望推荐一个而不是另一个。我喜欢这两个答案。感谢您的帮助
标签: python python-3.x pandas dataframe merge