如何从单数据集的年份列筛选数据 生成各年份独立的新数据集
实现按年份生成独立DataFrame的方法
推荐你优先使用字典存储各年份的DataFrame,这种方式便于统一管理、批量遍历调用,不会污染全局变量空间,完整实现代码如下:
import os import pandas as pd # 你原有数据处理逻辑,注意去掉末尾筛选2011年的代码 path = r"C:\Users\krishna gupta\Downloads\Diwali\temp" files = os.listdir(path) b=[] for file in files: df = pd.read_csv(os.path.join(path, file)) # 用os.path.join兼容不同系统路径格式 df = df[df['SYMBOL'] == 'NIFTY'] df = df[df['INSTRUMENT'] == 'FUTIDX'] df['RANGE'] = df['HIGH'] - df['LOW'] df['YEAR'] = df.TIMESTAMP.str[-4:] b.append(df) df = pd.concat(b) df = df.sort_values(['YEAR','TIMESTAMP']) df.reset_index(drop=True, inplace=True) # 直接通过drop=True省略删除index的单独步骤 # 核心逻辑:按YEAR列分组,存储为字典 year_df_dict = {} for year, group_data in df.groupby('YEAR'): year_df_dict[year] = group_data.reset_index(drop=True) # 后续调用示例 # 读取2010年数据:year_df_dict['2010'] # 读取2011年数据:year_df_dict['2011'] # 批量导出各年份数据为csv: # for year in year_df_dict: # year_df_dict[year].to_csv(f"{year}年数据集.csv", index=False)
如果你确实需要生成df_2010、df_2011这类独立变量,可以用globals()动态生成全局变量,代码如下:
for year, group_data in df.groupby('YEAR'): globals()[f'df_{year}'] = group_data.reset_index(drop=True) # 后续直接调用对应变量即可,比如直接执行df_2010就能查看2010年的数据集
内容的提问来源于stack exchange,提问作者Krishna Gupta
相关产品推荐
相关产品推荐

