如何遍历DataFrame列名并创建以列名+指定后缀命名的列表?
解决动态生成列表名称的问题
我来帮你搞定这个问题!你的代码现在没法生成目标列表,核心有两个问题:
一是你刚把列名拼接成目标名称,立刻就把name重新赋值成了空列表,等于完全覆盖了之前的字符串;二是Python里不能直接通过字符串赋值的方式动态创建变量名。
推荐方案:用字典存储列表(更规范易维护)
动态创建零散的变量很容易让代码变得混乱,最好的做法是用一个字典来统一管理这些列表——把column+'stuck'作为字典的键,对应的空列表作为值。这样后续你可以通过键名轻松访问对应的列表,代码逻辑也更清晰。
修改后的代码如下:
import pandas as pd # 假设dd1是你的原始DataFrame resampled = pd.DataFrame() resampled['RAT'] = dd1['RAT'] resampled['SAT'] = dd1['SAT'] rr = resampled - resampled.shift(1) # 创建空字典来存储所有目标列表 stuck_lists = {} for column in rr.columns: list_name = column + 'stuck' stuck_lists[list_name] = [] # 初始化空列表 print(f"已创建列表: {list_name}") # 后续访问列表的方式示例: # stuck_lists['RATstuck'].append(xxx) # stuck_lists['SATstuck'].extend(yyy)
如果你非要创建独立变量(不推荐)
如果你坚持要生成像RATstuck和SATstuck这样的独立全局变量,可以使用globals()函数,但这种方式会降低代码的可读性,还容易引发变量名冲突,谨慎使用:
import pandas as pd resampled = pd.DataFrame() resampled['RAT'] = dd1['RAT'] resampled['SAT'] = dd1['SAT'] rr = resampled - resampled.shift(1) for column in rr.columns: list_name = column + 'stuck' globals()[list_name] = [] # 在全局命名空间中创建列表 print(f"已创建变量: {list_name}") # 现在你可以直接使用RATstuck和SATstuck这两个列表了
内容的提问来源于stack exchange,提问作者tonyt
相关产品推荐
相关产品推荐

