问题描述
我的目标是合并两个数据帧,prev_df
和 new_df
。行在 statement_uuid
上匹配的地方:
注意:为了比较匹配的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
行 -
s2
值已从b
-->X
- 第
s4
行是全新的
foo
的 最后,期望的输出 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 (将#修改为@)