我有一个包含时间段成本的框架:
| valid_from|有效期至|成本|
| --|--|--|
| 2018-10-09 23:00:00| 2019-09-30 23:00:00| 28.6700|
| 2019-09-30 23:00:00| 2021-03-18 00:00:00|二十六点二七○ ○|
| 2022-10-13 23:00:00| Nat| 39.7339|
如果'valid_to'为NaT,则表示成本仍然是当前的。
我想把正确的成本添加到第二个时间段中,它被分成30分钟的时间段:
| valid_from|有效期至|消费|成本|
| --|--|--|--|
| 2023-09-16 23:30:00| 2023-09-17 00:00:00|零点零四|39.7339|
| 2023-09-17 00:00:00| 2023-09-17 00:30:00|零点零三|39.7339|
| 2019-10-17 00:30:00| 2019-10-17 01:00:00|零点零三|二十六点二七○ ○|
| 2018-10-16 20:30:00| 2018-10-16 21:00:00|零点零三|28.6700|
我如何实现这一点?
3条答案
按热度按时间4ngedf3f1#
其主要思想是获取两个字符串之间
valid_from
和valid_to
重叠的行的成本-这是一种不等式连接的形式,可以通过conditional_join有效处理:字符串
kqhtkvqz2#
因此,由于您的范围是日期时间,您可以为第一个框架创建
pd.IntervalIndex
,并使用它来匹配第二个框架中的日期范围。字符串
我将apply与一个lambda函数(它有一些检查)一起使用,如果存在匹配,它将返回来自Rename 1的cost
型
输出量:
型
ubbxdtey3#
你能试试这个吗:
字符串
然后创建一个函数:
型
最后,将函数应用于主框架:
型
测试:
型
退出:
型