如何用for循环为多个DataFrame新增eventdate列?
解决循环给多个DataFrame添加列的问题
错误原因
你写的代码df+str(i)['eventdate'] = "2021-09-15"是语法错误,因为df+str(i)是字符串拼接操作,Python不允许给运算符的结果赋值,因此触发SyntaxError: cannot assign to operator,和df是否定义无关。
正确解决方法
方法1:将DataFrames存入列表(推荐)
把所有目标DataFrame放进一个列表,直接遍历列表操作,这是最规范的方式:
# 先把所有df存入列表 dfs = [df0, df1, df2, df3, df4, df5, df6, df7, df8, df9] # 循环给每个df添加列 for df in dfs: df['eventdate'] = "2021-09-15"
由于DataFrame是可变对象,列表中的元素指向原DataFrame,修改后原df0~df9都会同步更新。
方法2:通过全局变量字典访问(临时处理用)
如果不想调整现有变量结构,可通过globals()获取全局命名空间中的DataFrame变量:
for i in range(10): # 拼接出目标df的变量名 df_name = f"df{i}" # 从全局变量中获取df对象并添加列 globals()[df_name]['eventdate'] = "2021-09-15"
这种方式可读性差,不推荐在正式项目中使用,仅适合临时快速处理。
内容的提问来源于stack exchange,提问作者Olive
相关产品推荐
相关产品推荐

