使用Pandas批量读取CSV并自定义变量名时的语法错误解决咨询
解决Python中用exec创建DataFrame变量的SyntaxError问题
错误原因
你遇到的SyntaxError: invalid token是因为Python变量名不能以数字开头,而你提取的subjid(比如100001_t0)直接作为变量名违反了这个语法规则。
推荐解决方案:用字典存储DataFrame(更易管理)
不要创建一堆独立变量,用字典统一存储所有处理后的DataFrame是更规范的做法,后续遍历、合并都更方便:
import pandas as pd import os # 初始化字典存储所有DataFrame df_collection = {} # 遍历目录下的CSV文件 for file in os.listdir('.'): if file.endswith('.csv'): # 提取subjid(去掉.csv后缀) subjid = file.rstrip('.csv') # 读取CSV temp_df = pd.read_csv(file) # 在这里执行你的数据整理操作 # 示例:删除列、重命名列、分组透视 # temp_df = temp_df.drop(columns=['unused_col']) # temp_df = temp_df.rename(columns={'old_name': 'new_name'}) # temp_df = temp_df.groupby('group_col').agg({'value_col': 'mean'}).reset_index() # 将处理后的DataFrame存入字典,key为subjid df_collection[subjid] = temp_df # 合并所有DataFrame final_combined_df = pd.concat(df_collection.values(), ignore_index=True)
可选方案:给变量名加前缀(强行创建独立变量)
如果坚持要生成独立变量,给变量名加个字母前缀(比如df_),让变量名以字母开头,符合Python语法:
# 替换原来的exec语句为: exec("df_{0} = pd.read_csv(filename)".format(subjid))
比如100001_t0会变成df_100001_t0,这样就能正常创建变量了。不过这种方式不推荐,当文件数量多的时候,变量会杂乱无章,后续维护和调用都很麻烦。
内容的提问来源于stack exchange,提问作者florence-y
相关产品推荐
相关产品推荐

