我有一个这样的 Dataframe :
DATE MIN_AMOUNT MAX_AMOUNT MIN_DAY MAX_DAY
01/09/2022 10 20 1 2
01/09/2022 15 25 4 5
01/09/2022 30 50 7 10
05/09/2022 10 20 1 2
05/09/2022 15 25 4 5
07/09/2022 15 25 4 5
我想用正向填充将数据框扩展到日期列之间的所有日期范围。所需的输出为:
DATE MIN_AMOUNT MAX_AMOUNT MIN_DAY MAX_DAY
01/09/2022 10 20 1 2
01/09/2022 15 25 4 5
01/09/2022 30 50 7 10
02/09/2022 10 20 1 2
02/09/2022 15 25 4 5
02/09/2022 30 50 7 10
03/09/2022 10 20 1 2
03/09/2022 15 25 4 5
03/09/2022 30 50 7 10
04/09/2022 10 20 1 2
04/09/2022 15 25 4 5
04/09/2022 30 50 7 10
05/09/2022 10 20 1 2
05/09/2022 15 25 4 5
06/09/2022 10 20 1 2
06/09/2022 15 25 4 5
07/09/2022 15 25 4 5
你能帮我解决这个问题吗?
2条答案
按热度按时间clj7thdc1#
首先将值转换为日期时间,通过
DataFrame.set_index
和DataFrame.unstack
创建帮助器计数器系列g
以进行整形,然后将DataFrame.asfreq
与method='ffill'
一起使用并通过DataFrame.stack
重新整形,通过DataFrame.droplevel
移除帮助器级别,将DatetimeIndex
转换为列,更改日期时间的格式,最后创建与原始DataFrame相同的数据类型:ehxuflar2#
几个合并应该会对此有所帮助,并且随着数据大小的增加应该仍然是高效的:
获取唯一的日期并从中构建新的 Dataframe :
合并
dates
和out
,然后将结果与原始 Dataframe 合并: