Python 在熊猫身上,将时间咒语缩短为日历月

Python 在熊猫身上,将时间咒语缩短为日历月,python,date,pandas,calendar,Python,Date,Pandas,Calendar,我有关于法术(住院)的数据,每个法术都有开始和结束日期,但我想计算日历月份住院的天数。当然,这个数字可以在没有出现在咒语中的几个月内为零。但是我不能仅仅将每个法术的长度归因于起始月份,因为更长的法术会延续到下一个月(或更多) 基本上,如果我可以在月初的日期时间内减少拼写,从第一个示例中的数据到第二个示例中的数据,这对我来说就足够了: id start end 1 2011-01-01 10:00:00

我有关于法术(住院)的数据,每个法术都有开始和结束日期,但我想计算日历月份住院的天数。当然,这个数字可以在没有出现在咒语中的几个月内为零。但是我不能仅仅将每个法术的长度归因于起始月份,因为更长的法术会延续到下一个月(或更多)

基本上,如果我可以在月初的日期时间内减少拼写,从第一个示例中的数据到第二个示例中的数据,这对我来说就足够了:

id                    start                     end
 1      2011-01-01 10:00:00     2011-01-08 16:03:00
 2      2011-01-28 03:45:00     2011-02-04 15:22:00
 3      2011-03-02 11:04:00     2011-03-05 05:24:00

id                    start                     end     month      stay
 1      2011-01-01 10:00:00     2011-01-08 16:03:00   2011-01         7
 2      2011-01-28 03:45:00     2011-01-31 23:59:59   2011-01         4
 2      2011-02-01 00:00:00     2011-02-04 15:22:00   2011-02         4
 3      2011-03-02 11:04:00     2011-03-05 05:24:00   2011-03         3

我读了很多关于熊猫的故事,但是我没有看到一个简单的解决方法。如何完成切片?这比你想象的要简单:只需减去日期。结果是一个时间跨度。看

您甚至可以一次对整个帧执行此操作:


更新,现在我更好地理解了这个问题。 添加一个新列:记下咒语的结束日期;如果开始日期在不同的月份,则将新日期的日期设置为01,时间设置为00:00


这是截止日期时间,您可以使用它来计算每个月的可归属停留时间。削减开始是第一个月;第二种是结束-结束。

这是如何减少月底的时间拼写的?我现在明白了——英语在某些地方是模棱两可的,特别是当与编程语言混合使用时。