如何根据日期范围对列求和---Python3

如何根据日期范围对列求和---Python3,python,python-3.x,pandas,pandas-groupby,Python,Python 3.x,Pandas,Pandas Groupby,我有一个CSV,根据该CSV,我需要根据开始日期所在的月份对每个月的费用进行汇总 将保险开始日期更改为某个日期,并使用Pandas汇总给定月份的所有费用的最佳方法是什么 以下是数据在CSV中的显示方式: Coverage Start Date Coverage End Date AMOUNT 20170902 20170930 0.37 20170905 20170930

我有一个CSV,根据该CSV,我需要根据开始日期所在的月份对每个月的费用进行汇总

保险开始日期更改为某个日期,并使用Pandas汇总给定月份的所有费用的最佳方法是什么

以下是数据在CSV中的显示方式:

Coverage Start Date     Coverage End Date       AMOUNT
20170902                20170930                0.37
20170905                20170930                11
20170815                20170831                0.37
20170909                20170930                0.37

假设您使用的是
python3

data = {'Coverage Start Date': ['20170902', '20170905', `'20170815'],'Coverage End Date':['20170930', '20170930', '20170831'] , 'AMOUNT': [0.37, 11, 0.37]}`
df = pd.DataFrame(data)
现在,将其转换为
datetime
index

df['Coverage End Date'] = pd.to_datetime(df['Coverage End Date'])
df['Coverage Start Date'] = pd.to_datetime(df['Coverage Start Date'])
然后,创建起始日期作为索引

df = df.set_index(df['Coverage Start Date'])
然后使用,
TimeGrouper

new_df = df.groupby(pd.TimeGrouper('M')).sum()
产出

                        AMOUNT
Coverage Start Date
2017-08-31               0.37              
2017-09-30               11.37

我喜欢I.n.n.m.的代码。但是,要将日期-时间函数应用于多列,您可以使用下面的

data = {'Coverage Start Date': ['20170902', '20170905', '20170815'],'Coverage End Date':['20170930', '20170930', '20170831'] , 'AMOUNT': [0.37, 11, 0.37]}
df = pd.DataFrame(data)
df.iloc[:, 1:] = df.iloc[:, 1:].apply(pd.to_datetime)

    AMOUNT  Coverage End Date   Coverage Start Date
0   0.37          2017-09-30            2017-09-02
1   11.00         2017-09-30            2017-09-05
2   0.37          2017-08-31            2017-08-15
然后对它们进行分组

2个步骤:1)使用与要修改的列对应的转换器(请参见:),然后提取日期的月、日、年信息,最后使用datetime进行转换。2) 正确转换列后,可以在给定的框架内进行选择,然后对结果中的价格求和。