微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

合并两个数据框并建立带有日期更新的“最新”行

如何解决合并两个数据框并建立带有日期更新的“最新”行

我的目标是合并两个数据帧,prev_dfnew_df。行在 statement_uuid 上匹配的地方:

  1. 如果值没有改变,只需更新前一行的 date_confirmed删除新行
  2. 如果值不同,将上一行设置为 latest=False添加新行

注意:为了比较匹配的statement_uuid,应忽略以下列:[statement_uuid,date_created,date_confirmed,latest]

更高级别的目标是生成一个数据框,该数据框记录非排除列值中的差异 statement_uuid-wise。

示例prev_df

|    | statement_uuid   | foo   |   bar | date_created        | date_confirmed      | latest   |
|---:|:-----------------|:------|------:|:--------------------|:--------------------|:---------|
|  0 | s1               | a     |    42 | 2021-01-01 00:00:00 | 2021-01-10 00:00:00 | True     |
|  1 | s2               | b     |    42 | 2021-01-01 00:00:00 | 2021-01-10 00:00:00 | True     |
|  2 | s3               | c     |    42 | 2021-01-10 00:00:00 | 2021-01-10 00:00:00 | True     |

示例new_df

|    | statement_uuid   | foo   |   bar | date_created        | date_confirmed      | latest   |
|---:|:-----------------|:------|------:|:--------------------|:--------------------|:---------|
|  0 | s2               | X     |    42 | 2021-01-20 00:00:00 | 2021-01-20 00:00:00 | None     |
|  1 | s3               | c     |    42 | 2021-01-20 00:00:00 | 2021-01-20 00:00:00 | None     |
|  2 | s4               | Y     |    42 | 2021-01-20 00:00:00 | 2021-01-20 00:00:00 | None     |
  • 此数据框中不存在第 s1
  • foo
  • s2 值已从 b --> X
  • s4 行是全新的

最后,期望的输出 df:

|    | statement_uuid   | foo   |   bar | date_created        | date_confirmed      | latest   |
|---:|:-----------------|:------|------:|:--------------------|:--------------------|:---------|
|  0 | s1               | a     |    42 | 2021-01-01 00:00:00 | 2021-01-10 00:00:00 | True     |
|  1 | s2               | b     |    42 | 2021-01-01 00:00:00 | 2021-01-10 00:00:00 | False    |
|  2 | s2               | X     |    42 | 2021-01-20 00:00:00 | 2021-01-20 00:00:00 | True     |
|  3 | s3               | c     |    42 | 2021-01-10 00:00:00 | 2021-01-20 00:00:00 | True     |
|  4 | s4               | Y     |    42 | 2021-01-20 00:00:00 | 2021-01-20 00:00:00 | True     |
  • statement_uuid=s2 现在有 两行
    • 以前的 foo=b 值,现在是 latest=False
    • foo=X 的新值,现在是 latest=True
  • date_confirmed 已针对新行和已确认行进行了更新,但对于不再是最新行的 s2 进行了

更新:已经找到了一个可行的解决方案,但仍然感谢对改进或其他方法的任何见解。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。