【发布时间】:2021-06-29 19:04:14
【问题描述】:
我有两个数据框如下:
协议
agreement_id activation term_months total_fee
0 A 2020-12-01 24 4800
1 B 2021-01-02 6 300
2 C 2021-01-21 6 600
3 D 2021-03-04 6 300
付款
cust_id agreement_id date payment
0 1 A 2020-12-01 200
1 1 A 2021-02-02 200
2 1 A 2021-02-03 100
3 1 A 2021-05-01 200
4 1 B 2021-01-02 50
5 1 B 2021-01-09 20
6 1 B 2021-03-01 80
7 1 B 2021-04-23 90
8 2 C 2021-01-21 600
9 3 D 2021-03-04 150
10 3 D 2021-05-03 150
当付款数据框中的协议 ID 的总付款等于协议 ID 中的总费用时,我想在付款数据框中添加另一行。该行将在付款下包含零值,并且日期将计算为 min(date)(来自付款)加上 term_months(来自协议)。
这是我想要的支付数据框的结果:
付款
cust_id agreement_id date payment
0 1 A 2020-12-01 200
1 1 A 2021-02-02 200
2 1 A 2021-02-03 100
3 1 A 2021-05-01 200
4 1 B 2021-01-02 50
5 1 B 2021-01-09 20
6 1 B 2021-03-01 80
7 1 B 2021-04-23 90
8 2 C 2021-01-21 600
9 3 D 2021-03-04 150
10 3 D 2021-05-03 150
11 2 C 2021-07-21 0
12 3 D 2021-09-04 0
额外的行是第 11 行和第 12 行。agreement_id 'C' 和 'D' 等于协议数据框中显示的 total_fee。
【问题讨论】:
-
你能展示你尝试解决这个问题的代码吗?谢谢。
-
您需要使用
pd.to_datetime()将date转换为datetime格式(请参阅doc)才能创建新的日期时间值——除非您想手动操作。跨度> -
我刚刚转换了。
标签: python python-3.x pandas numpy append