【发布时间】:2022-01-24 13:53:06
【问题描述】:
我有 2 个 df。第一个是 id 列表,对于每个 id 都有从 01-01-2013 到 12-31-2013 的日期列表。例如,我有 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和日期合并df。因此,对于带有疾病标签的每个 ID,我将获得一年中所有日子的连续天数。我不关心 sub_id,但是如果我有 2 个相同的日期,并且我至少有 1 个生病的 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')
但是一些标签为 1 的 id 其结果标签为 0 谢谢
【问题讨论】: