我有数据库,用于在任何给定日期对给定问题ID所做的更改。changed_parameter中的值是进行更改的参数。
其已更改参数的旧值和新值分别在old_value new_value列中更新
| 问题ID|到期日|地位|估计小时|更改日期|变化参数|旧值|新值|
| --|--|--|--|--|--|--|--|
| 101 |2023年1月31日|关闭| 40 |2023年1月10日|地位|定义|接受|
| 101 |2023年1月31日|关闭| 40 |2023年1月15日|估计小时| 0 | 20 |
| 101 |2023年1月31日|关闭| 40 |2023年1月16日|估计小时| 20 | 30 |
| 101 |2023年1月31日|关闭| 40 |2023年1月16日|到期日|2023年1月20日|2023年1月31日|
| 101 |2023年1月31日|关闭| 40 |2023年1月20日|地位|接受|InProgress|
| 101 |2023年1月31日|关闭| 40 |2023年1月25日|估计小时| 30 | 40 |
| 101 |2023年1月31日|关闭| 40 |2023年1月30日|地位|InProgress|关闭|
| 102 |2023年2月28日|关闭| 50 |2023年1月10日|地位|定义|接受|
| 102 |2023年2月28日|关闭| 50 |2023年1月15日|估计小时| 0 | 30 |
| 102 |2023年2月28日|关闭| 50 |2023年1月20日|地位|接受|InProgress|
| 102 |2023年2月28日|关闭| 50 |2023年1月25日|估计小时| 30 | 50 |
| 102 |2023年2月28日|关闭| 50 |2023年1月30日|地位|InProgress|关闭|
因此,现在我必须根据上述数据在更改的日期创建问题ID的快照
所以我的最终表格应该是这样的
| 问题ID|到期日|地位|估计小时|更改日期|变化参数|旧值|新值|
| --|--|--|--|--|--|--|--|
| 101 |2023年1月20日|接受| 0 |2023年1月10日|地位|定义|接受|
| 101 |2023年1月20日|接受| 20 |2023年1月15日|估计小时| 0 | 20 |
| 101 |2023年1月20日|接受| 30 |2023年1月16日|估计小时| 20 | 30 |
| 101 |2023年1月31日|接受| 30 |2023年1月16日|到期日|2023年1月20日|2023年1月31日|
| 101 |2023年1月31日|InProgress| 30 |2023年1月20日|地位|接受|InProgress|
| 101 |2023年1月31日|InProgress| 40 |2023年1月25日|估计小时| 30 | 40 |
| 101 |2023年1月31日|关闭| 40 |2023年1月30日|地位|InProgress|关闭|
| 102 |2023年2月28日|接受| 0 |2023年1月10日|地位|定义|接受|
| 102 |2023年2月28日|接受| 30 |2023年1月15日|估计小时| 0 | 30 |
| 102 |2023年2月28日|InProgress| 30 |2023年1月20日|地位|接受|InProgress|
| 102 |2023年2月28日|InProgress| 50 |2023年1月25日|估计小时| 30 | 50 |
| 102 |2023年2月28日|关闭| 50 |2023年1月30日|地位|InProgress|关闭|
我已经在pandas框架中更新了上面的数据,并迭代了每一行。
在每次迭代中,我都将已更改参数的旧值更新到该问题ID的先前可用行,直到相同。新值更新到当前行,如下所示
遍历每一行都很耗时
第1次迭代
| 问题ID|到期日|地位|估计小时|更改日期|变化参数|旧值|新值|
| --|--|--|--|--|--|--|--|
| 101 |2023年1月31日|接受| 40 |2023年1月10日|地位|定义|接受|
| 101 |2023年1月31日|关闭| 40 |2023年1月15日|估计小时| 0 | 20 |
| 101 |2023年1月31日|关闭| 40 |2023年1月16日|估计小时| 20 | 30 |
| 101 |2023年1月31日|关闭| 40 |2023年1月16日|到期日|2023年1月20日|2023年1月31日|
| 101 |2023年1月31日|关闭| 40 |2023年1月20日|地位|接受|InProgress|
| 101 |2023年1月31日|关闭| 40 |2023年1月25日|估计小时| 30 | 40 |
| 101 |2023年1月31日|关闭| 40 |2023年1月30日|地位|InProgress|关闭|
| 102 |2023年2月28日|关闭| 50 |2023年1月10日|地位|定义|接受|
| 102 |2023年2月28日|关闭| 50 |2023年1月15日|估计小时| 0 | 30 |
| 102 |2023年2月28日|关闭| 50 |2023年1月20日|地位|接受|InProgress|
| 102 |2023年2月28日|关闭| 50 |2023年1月25日|估计小时| 30 | 50 |
| 102 |2023年2月28日|关闭| 50 |2023年1月30日|地位|InProgress|关闭|
第二次迭代
| 问题ID|到期日|地位|估计小时|更改日期|变化参数|旧值|新值|
| --|--|--|--|--|--|--|--|
| 101 |2023年1月31日|接受| 0 |2023年1月10日|地位|定义|接受|
| 101 |2023年1月31日|关闭| 20 |2023年1月15日|估计小时| 0 | 20 |
| 101 |2023年1月31日|关闭| 40 |2023年1月16日|估计小时| 20 | 30 |
| 101 |2023年1月31日|关闭| 40 |2023年1月16日|到期日|2023年1月20日|2023年1月31日|
| 101 |2023年1月31日|关闭| 40 |2023年1月20日|地位|接受|InProgress|
| 101 |2023年1月31日|关闭| 40 |2023年1月25日|估计小时| 30 | 40 |
| 101 |2023年1月31日|关闭| 40 |2023年1月30日|地位|InProgress|关闭|
| 102 |2023年2月28日|关闭| 50 |2023年1月10日|地位|定义|接受|
| 102 |2023年2月28日|关闭| 50 |2023年1月15日|估计小时| 0 | 30 |
| 102 |2023年2月28日|关闭| 50 |2023年1月20日|地位|接受|InProgress|
| 102 |2023年2月28日|关闭| 50 |2023年1月25日|估计小时| 30 | 50 |
| 102 |2023年2月28日|关闭| 50 |2023年1月30日|地位|InProgress|关闭|
第3次迭代
| 问题ID|到期日|地位|估计小时|更改日期|变化参数|旧值|新值|
| --|--|--|--|--|--|--|--|
| 101 |2023年1月31日|接受| 0 |2023年1月10日|地位|定义|接受|
| 101 |2023年1月31日|关闭| 20 |2023年1月15日|估计小时| 0 | 20 |
| 101 |2023年1月31日|关闭| 30 |2023年1月16日|估计小时| 20 | 30 |
| 101 |2023年1月31日|关闭| 40 |2023年1月16日|到期日|2023年1月20日|2023年1月31日|
| 101 |2023年1月31日|关闭| 40 |2023年1月20日|地位|接受|InProgress|
| 101 |2023年1月31日|关闭| 40 |2023年1月25日|估计小时| 30 | 40 |
| 101 |2023年1月31日|关闭| 40 |2023年1月30日|地位|InProgress|关闭|
| 102 |2023年2月28日|关闭| 50 |2023年1月10日|地位|定义|接受|
| 102 |2023年2月28日|关闭| 50 |2023年1月15日|估计小时| 0 | 30 |
| 102 |2023年2月28日|关闭| 50 |2023年1月20日|地位|接受|InProgress|
| 102 |2023年2月28日|关闭| 50 |2023年1月25日|估计小时| 30 | 50 |
| 102 |2023年2月28日|关闭| 50 |2023年1月30日|地位|InProgress|关闭|
第四次迭代
| 问题ID|到期日|地位|估计小时|更改日期|变化参数|旧值|新值|
| --|--|--|--|--|--|--|--|
| 101 |2023年1月20日|接受| 0 |2023年1月10日|地位|定义|接受|
| 101 |2023年1月20日|关闭| 20 |2023年1月15日|估计小时| 0 | 20 |
| 101 |2023年1月20日|关闭| 30 |2023年1月16日|估计小时| 20 | 30 |
| 101 |2023年1月31日|关闭| 40 |2023年1月16日|到期日|2023年1月20日|2023年1月31日|
| 101 |2023年1月31日|关闭| 40 |2023年1月20日|地位|接受|InProgress|
| 101 |2023年1月31日|关闭| 40 |2023年1月25日|估计小时| 30 | 40 |
| 101 |2023年1月31日|关闭| 40 |2023年1月30日|地位|InProgress|关闭|
| 102 |2023年2月28日|关闭| 50 |2023年1月10日|地位|定义|接受|
| 102 |2023年2月28日|关闭| 50 |2023年1月15日|估计小时| 0 | 30 |
| 102 |2023年2月28日|关闭| 50 |2023年1月20日|地位|接受|InProgress|
| 102 |2023年2月28日|关闭| 50 |2023年1月25日|估计小时| 30 | 50 |
| 102 |2023年2月28日|关闭| 50 |2023年1月30日|地位|InProgress|关闭|
第五次迭代
| 问题ID|到期日|地位|估计小时|更改日期|变化参数|旧值|新值|
| --|--|--|--|--|--|--|--|
| 101 |2023年1月20日|接受| 0 |2023年1月10日|地位|定义|接受|
| 101 |2023年1月20日|接受| 20 |2023年1月15日|估计小时| 0 | 20 |
| 101 |2023年1月20日|接受| 30 |2023年1月16日|估计小时| 20 | 30 |
| 101 |2023年1月31日|接受| 40 |2023年1月16日|到期日|2023年1月20日|2023年1月31日|
| 101 |2023年1月31日|InProgress| 40 |2023年1月20日|地位|接受|InProgress|
| 101 |2023年1月31日|关闭| 40 |2023年1月25日|估计小时| 30 | 40 |
| 101 |2023年1月31日|关闭| 40 |2023年1月30日|地位|InProgress|关闭|
| 102 |2023年2月28日|关闭| 50 |2023年1月10日|地位|定义|接受|
| 102 |2023年2月28日|关闭| 50 |2023年1月15日|估计小时| 0 | 30 |
| 102 |2023年2月28日|关闭| 50 |2023年1月20日|地位|接受|InProgress|
| 102 |2023年2月28日|关闭| 50 |2023年1月25日|估计小时| 30 | 50 |
| 102 |2023年2月28日|关闭| 50 |2023年1月30日|地位|InProgress|关闭|
等等。
1条答案
按热度按时间r1wp621o1#
因为你的例子不是那么简单,你需要重新塑造你的数据框,然后按
Issue_Id
分组,然后更新值。因为你的数据框是按“changed_date”排序的,所以我们的想法是向前填充新值,向后填充旧值。如果参数丢失,只需用现有的值填充:字符串
输出量:
型
老答案
型
输出量:
型