如何根据日期范围对列求和---Python3
我有一个CSV,根据该CSV,我需要根据开始日期所在的月份对每个月的费用进行汇总 将如何根据日期范围对列求和---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
保险开始日期更改为某个日期,并使用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) 正确转换列后,可以在给定的框架内进行选择,然后对结果中的价格求和。