python - GroupBy 总和在开始和结束日期范围内的比例

我正在我的 Python 探索之旅中查看这个无人机租赁数据集,并试图GroupBy在结果列中显示每个无人机每个月的收入。


如果结果与特定日期相关联,我通常可以这样做,但由于这是一个长期租赁业务,我需要计算出在开始日期和结束日期之间每个月有多少结果可归因于。


+------+------------------+------------------+--------+

| Drone|     Start        |      End         | Result |

+------+------------------+------------------+--------+

| DR1    16/06/2013 10:30   22/08/2013 07:00    2786  |

| DR1    20/04/2013 23:30   16/06/2013 10:30    7126  |

| DR1    24/01/2013 23:00   20/04/2013 23:30    2964  |

| DR2    01/03/2014 19:00   07/05/2014 18:00    8884  |

| DR2    04/09/2015 09:00   04/11/2015 07:00    7828  |

| DR2    04/10/2013 05:00   24/12/2013 07:00    5700  |

+-----------------------------------------------------+

我能够使用这个找到日期的差异:


import datetime

from dateutil.relativedelta import relativedelta

df.Start = pd.to_datetime(df.Start)

df.End = pd.to_datetime(df.End)

a = df.loc[0, 'Start']

b = df.loc[0, 'End']

relativedelta(a,b)

然而,输出打印如下:


相对增量(月=-2,天=-5,小时=-20,分钟=-30)


我不能像使用 GroupBy 数据集有一个日期那样使用它来计算可归属的现金


df.groupby(['Device', 'Date']).agg(sum)['Result']

我将不胜感激有关解决此类问题的正确思考过程以及代码外观的帮助。


以每种无人机类型的第一个示例为例,我的预期输出是:


+------+-------+-------+---------+

|Drone | Month | Days  |  Result |

+------+-------+-------+---------+

|DR1     June      X       $YY   |

|DR1     July      X       $YY   |

|DR1     August    X       $YY   |

|DR2     March     Y       $ZZ   |

|DR2     April     Y       $ZZ   |

|DR2     May       Y       $ZZ   |

+--------------------------------+

谢谢


函数式编程
浏览 207回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python