pandas基于2列值合并df



我有2个df。第一个是id列表,对于每个id,都有2013年1月1日至2013年12月31日的列表。我有30个唯一的id,例如df1:

id    date
1      01-01-2013
1      01-02-2013
1      01-03-2013
....
1      12-31-2013
2      01-01-2013
2      01-02-2013
....
2      12-31-2013

我的第二个df是id,sub_id(每个sub_id都包含一些id(诊断日期和疾病标签-0或1。例如:

id   sub_id      date    disease
1     345      01-01-2013         0
1     967       01-01-2013        1
2      843     06-03-2013        0

等等。我想合并基于id和date的df。因此,我将获得一年中每一个带有疾病标签的id的连续天数。我不在乎sub_id,但如果我有两个相同的日期,并且我至少有一个生病的sub_id我想在当天返回标签1。如果没有值,用0填充nan例如:df2

id    date          disease
1      01-01-2013     1
1       01-02-2013    0
1        01-13-2013    0
.....

我试过这个代码:

df2.sort_values('disease').drop_duplicates(subset='date', keep='last').merge(df1,on=['id','date'],how='right')

但是某个id的标签为1,其结果标签为0感谢

我会使用groupby:

df2.groupby(['id','date']).max().reset_index().merge(df1,on=['id','date'],how='right')

最新更新