基于日期条件拆分DataFrame并写入两文件的实现咨询(Python3.6/Pandas0.22)
Pandas 分年份导出数据到独立文件的实现思路
针对你用Python3.6 + Pandas0.22处理降雪平均值数据、分2016/2017年导出的需求,给你几个靠谱的实现思路:
核心思路:按年份筛选数据
首先得确保你的DataFrame里有能识别年份的字段(比如日期列,或者单独的year列),然后按年份拆分后分别导出。
方法1:直接按年份布尔索引筛选
如果有单独的year列:
import pandas as pd # 假设你的DataFrame叫snow_df,包含year、month、location、avg_snow列 # 筛选2016年数据并导出 snow_2016 = snow_df[snow_df['year'] == 2016] snow_2016.to_csv('2016_snow_avg.csv', index=False) # 筛选2017年数据并导出 snow_2017 = snow_df[snow_df['year'] == 2017] snow_2017.to_csv('2017_snow_avg.csv', index=False)
如果只有日期列(比如date列是datetime类型):
# 先提取年份到新列(Pandas0.22支持dt.year) snow_df['year'] = snow_df['date'].dt.year # 之后同上筛选导出即可
方法2:用groupby批量处理(适合扩展到更多年份)
如果以后可能有更多年份,用groupby循环更高效:
# 按year分组,遍历每个分组 for year, group in snow_df.groupby('year'): # 只处理2016和2017年 if year in [2016, 2017]: group.to_csv(f'{year}_snow_avg.csv', index=False)
注意:Python3.6已经支持f-string,直接用它拼接文件名很方便
Pandas0.22相关文档指引
- 布尔索引筛选:对应文档里的Boolean Indexing章节,重点看基于列值的筛选逻辑
- dt属性提取日期部分:对应Datetime Properties章节,
dt.year是提取年份的常用方法 - groupby分组:对应GroupBy Object章节,了解遍历分组的方式
- to_csv方法:重点看
index参数(设为False可以避免导出多余的索引列)
代码验证小技巧
写完代码后可以先打印筛选后的DataFrame信息确认:
print("2016年数据行数:", len(snow_2016)) print("2017年数据行数:", len(snow_2017)) # 或者查看前几行 print(snow_2016.head())
确保数据没有漏选或多选,再执行导出操作。
内容的提问来源于stack exchange,提问作者James Pi
相关产品推荐
相关产品推荐

