我有关于法术(住院)的数据,每个都有开始和结束日期,但我想计算在日历月内在医院度过的天数。当然,这个数字可以在几个月内没有出现在一个咒语中。但是我不能将每个法术的长度归结为起始月份,因为更长的法术会持续到下个月(或更长时间)。
基本上,如果我可以在月末日期时减少法术,从第一个例子中的数据到第二个例子中的数据,就足够了:
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大熊猫,但我没有看到一个直截了当的解决方案。怎样才能完成切片?
答案 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。
这是您可以用来计算可归因于每个月的停留部分的削减日期时间。切 - 开始是第一个月;结束 - 是第二次。