如何自动按年份拆分涵盖1959-2003年的DataFrame?
按年份自动拆分DataFrame的实用方法
当然有高效的自动拆分方法啦!用Pandas处理这类时间维度的数据集简直是小菜一碟,给你分享两种最常用的方案:
1. 按年份分组并批量保存子数据集
如果你的DataFrame里有时间列(不管是datetime类型还是字符串格式),先把年份提取出来,再用groupby按年份分组,遍历每个组就能自动生成对应年份的子数据集了:
import pandas as pd # 假设你的数据集是df,时间列名为'date' # 第一步:如果时间列是字符串,先转成datetime类型 df['date'] = pd.to_datetime(df['date']) # 第二步:提取年份列 df['year'] = df['date'].dt.year # 第三步:按年份分组,遍历保存每个子数据集 for year, sub_df in df.groupby('year'): # 保存为CSV(也可以换成to_excel存成Excel文件) sub_df.to_csv(f"dataset_{year}.csv", index=False) print(f"已生成{year}年的子数据集")
2. 将子数据集存入字典,方便后续调用
如果不需要立刻保存到文件,而是想在代码里随时调用某一年的数据,可以把每个年份的子DataFrame存入字典:
# 生成以年份为键、子DataFrame为值的字典 year_data_dict = {year: sub_df for year, sub_df in df.groupby('year')} # 示例:调用1959年的子数据集 print(year_data_dict[1959].head())
小贴士
- 如果你的DataFrame已经有单独的
year列(不是从时间列提取的),可以跳过提取年份的步骤,直接用df.groupby('year')分组。 - 要是只想拆分特定年份(比如你之前手动筛选的1959、1969),也可以在分组后过滤,或者直接用
df[df['year'].isin([1959, 1969])]提取,但自动拆分所有年份用groupby是最高效的方式。
内容的提问来源于stack exchange,提问作者has cho
相关产品推荐
相关产品推荐

