在熊猫中将时间法术缩短为日历月

时间:2015-09-22 22:08:11

标签: python date pandas calendar

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

基本上,如果我可以在月末日期时减少法术,从第一个例子中的数据到第二个例子中的数据,就足够了:

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

我读了大概的Time Series / Date functionality大熊猫,但我没有看到一个直截了当的解决方案。怎样才能完成切片?

1 个答案:

答案 0 :(得分:-2)

它比你想象的简单:只需减去日期。结果是时间跨度。见Add column with number of days between dates in DataFrame pandas

您甚至可以立即对整个框架执行此操作: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.subtract.html

更新,现在我更好地理解了这个问题。 添加新列:获取该法术的结束日期;如果开始日期是在不同的月份,则将此新日期设置为01,将时间设置为00:00。

这是您可以用来计算可归因于每个月的停留部分的削减日期时间。切 - 开始是第一个月;结束 - 是第二次。