如何动态生成DataFrame赋值代码,实现随机列线性建模自动化?
动态处理DataFrame列赋值的解决方案
你根本不需要动态生成代码或者用C扩展,Python+pandas本身就有简洁高效的方法解决这个问题:
1. 基础循环方式
如果需要遍历选中的列逐一赋值,直接循环assignment_list即可,不管列数多少都能自动适配:
# i为当前迭代的行索引,assignment_list是本次随机选中的列名列表 for col in assignment_list: test_df.loc[i, col] = i
2. 高效向量化赋值
如果要给选中的所有列赋予同一个值i,可以直接用pandas的批量赋值功能,一行代码搞定,比循环效率更高:
test_df.loc[i, assignment_list] = i
关于globals()失败的原因
globals()是用来管理全局命名空间中的变量,而你要操作的是DataFrame的列,和全局变量无关,所以用它来实现列赋值从逻辑上就不成立,自然会失败。
关于C扩展的疑问
完全不需要用C扩展来解决这个问题。pandas本身已经针对DataFrame的操作做了大量优化,上述方法既简洁又高效。C扩展会大幅增加代码复杂度和维护成本,属于过度设计,完全没必要。
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

