【问题标题】:pandas merge df based of 2 column valuepandas 根据 2 列值合并 df
【发布时间】: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 谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我会使用groupby:

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

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多