如何批量将Pandas DataFrame列转为独立Series?避免循环赋值报错
Pandas批量将DataFrame列转为独立Series的方案
推荐方案:用字典存储(规范易维护)
不用手动逐个命名s1到s10,把处理后的Series统一存进字典,想用的时候按键调用即可:
按序号命名键(s1、s2...)
series_dict = {} # 从1开始计数生成s1、s2 for idx, col in enumerate(df.columns, start=1): series_dict[f"s{idx}"] = df[col].dropna() # 使用示例:取第一列处理后的Series # series_dict["s1"]
按列名命名键(更直观)
如果列本身有有意义的名字,直接用列名当键更方便:
series_dict = {col_name: df[col_name].dropna() for col_name in df.columns} # 使用示例:取名为"age"的列处理后的Series # series_dict["age"]
可选方案:动态生成全局变量(谨慎使用)
如果一定要生成s1、s2这种直接可用的变量,可以用globals()动态创建,但这种方式会打乱全局命名空间,后期代码不好维护,不建议常用:
for idx, col in enumerate(df.columns, start=1): globals()[f"s{idx}"] = df[col].dropna() # 直接调用s1、s2即可
关于遍历列时的赋值错误
你之前出错大概率是直接用字符串当变量名赋值(比如写"s1" = df.iloc[:,0].dropna()),Python不允许这么干——变量名得是标识符,不能用字符串字面量,所以得用字典或者globals()这种间接方式来赋值。
内容的提问来源于stack exchange,提问作者Michael K
相关产品推荐
相关产品推荐

