按星期几维度累加Dataframe日期对应交易数据的技术需求
按星期几维度累加交易数据的Pandas实现方案
我来帮你搞定这个按星期几汇总交易量的需求,用Pandas几步就能轻松实现,下面是具体的步骤和代码示例:
1. 确保日期列是Datetime类型
首先要确认你的Date列是Pandas的datetime格式,如果原始数据是字符串的话,先转换一下:
import pandas as pd # 转换日期列为datetime类型(如果还没转的话) df['Date'] = pd.to_datetime(df['Date'])
2. 提取星期几信息
你有两种方式获取星期几的标识,根据需求选就行:
- 方式一:获取星期名称(如Monday、Tuesday)
# 新增Weekday列,存储星期名称 df['Weekday'] = df['Date'].dt.day_name()
- 方式二:获取星期数字(0=周一,1=周二...6=周日)
# 新增Weekday_Num列,存储星期数字 df['Weekday_Num'] = df['Date'].dt.weekday
3. 按星期几分组累加交易量
接下来就可以按星期几分组,对所有交易量列进行求和了:
用星期名称分组的完整示例
# 提取星期名称 df['Weekday'] = df['Date'].dt.day_name() # 按星期几分组,计算各股票交易量的总和 weekly_volume_total = df.groupby('Weekday')[['ANZ_Volume', 'BHP_Volume', 'CBA_Volume', 'MQG_Volume', 'NAB_Volume']].sum() # 可选:按周一到周日的顺序排序(默认groupby会按字母排序,比如Friday会在Monday前面) week_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] weekly_volume_total = weekly_volume_total.reindex(week_order)
用星期数字分组的示例
# 提取星期数字 df['Weekday_Num'] = df['Date'].dt.weekday # 分组求和 weekly_volume_total = df.groupby('Weekday_Num')[['ANZ_Volume', 'BHP_Volume', 'CBA_Volume', 'MQG_Volume', 'NAB_Volume']].sum()
4. 可选:只统计工作日(周一到周五)
如果你的交易数据只有工作日有记录,或者你只想看工作日的累加结果,可以先过滤掉周六和周日:
# 过滤出周一到周五的数据(weekday数字0-4对应周一到周五) workday_df = df[df['Date'].dt.weekday < 5] # 按星期名称分组求和并排序 weekly_volume_total = workday_df.groupby('Weekday')[['ANZ_Volume', 'BHP_Volume', 'CBA_Volume', 'MQG_Volume', 'NAB_Volume']].sum() weekly_volume_total = weekly_volume_total.reindex(week_order[:5]) # 只取周一到周五的顺序
这样处理完之后,weekly_volume_total就是你需要的按星期几维度累加后的结果啦,每一行对应一个星期几,列是各股票的总交易量。
内容的提问来源于stack exchange,提问作者3kstc
相关产品推荐
相关产品推荐

