如何按周拆分Pandas DataFrame并保存为独立CSV文件?
按指定周区间拆分Pandas DataFrame并导出CSV
没问题,我来帮你搞定这个需求!按照你指定的10月4个固定时间段拆分数据,步骤很清晰,咱们一步步来:
1. 先把时间戳列转换成Pandas可识别的datetime类型
你的Time Stamp列是字符串格式,得先转换成datetime类型,这样才能按日期筛选。用pd.to_datetime()方法,注意匹配你数据的时间格式(日/月/年 + 时分秒毫秒):
import pandas as pd # 假设你的原始DataFrame名为df df['Time Stamp'] = pd.to_datetime(df['Time Stamp'], format='%d/%m/%Y %H:%M:%S:%f')
2. 按指定周区间筛选数据并保存为CSV
你要的不是自然周,是固定的日期区间,这里提供两种实现方式:
方式一:手动逐个处理(逻辑直观,适合新手)
# 第一周:10月1日-7日 week1 = df[(df['Time Stamp'].dt.date >= pd.to_datetime('2016-10-01').date()) & (df['Time Stamp'].dt.date <= pd.to_datetime('2016-10-07').date())] week1.to_csv('week1_data.csv', index=False) # 第二周:10月8日-14日 week2 = df[(df['Time Stamp'].dt.date >= pd.to_datetime('2016-10-08').date()) & (df['Time Stamp'].dt.date <= pd.to_datetime('2016-10-14').date())] week2.to_csv('week2_data.csv', index=False) # 第三周:10月15日-21日 week3 = df[(df['Time Stamp'].dt.date >= pd.to_datetime('2016-10-15').date()) & (df['Time Stamp'].dt.date <= pd.to_datetime('2016-10-21').date())] week3.to_csv('week3_data.csv', index=False) # 第四周:10月22日-31日 week4 = df[(df['Time Stamp'].dt.date >= pd.to_datetime('2016-10-22').date()) & (df['Time Stamp'].dt.date <= pd.to_datetime('2016-10-31').date())] week4.to_csv('week4_data.csv', index=False)
方式二:用循环简化代码(更高效,易维护)
如果以后需要调整区间,循环的方式改起来更方便:
# 定义周数和对应的日期区间(起始日,结束日) week_intervals = [ (1, '2016-10-01', '2016-10-07'), (2, '2016-10-08', '2016-10-14'), (3, '2016-10-15', '2016-10-21'), (4, '2016-10-22', '2016-10-31') ] for week_num, start_date, end_date in week_intervals: # 转换为日期格式(忽略时分秒) start = pd.to_datetime(start_date).date() end = pd.to_datetime(end_date).date() # 筛选对应周的数据 week_data = df[(df['Time Stamp'].dt.date >= start) & (df['Time Stamp'].dt.date <= end)] # 导出为CSV,不保留Pandas索引列 week_data.to_csv(f'week{week_num}_data.csv', index=False) print(f"已完成第{week_num}周数据导出:week{week_num}_data.csv")
小提示
index=False是为了避免把Pandas自动生成的索引列导出到CSV里,如果你需要保留索引可以去掉这个参数。- 如果原始数据的时间格式有变动,记得调整
pd.to_datetime()里的format参数,确保转换不出错。 - 如果数据里存在少量不在这四个区间的行(比如9月30日或11月1日),这些行会被自动忽略,要是需要处理这类数据,可以额外加判断逻辑。
内容的提问来源于stack exchange,提问作者User1
相关产品推荐
相关产品推荐

