如何在Pandas的assign函数循环中使用动态列名?
在pandas的assign操作中使用字符串作为列名的解决方法
你的代码无法运行,核心原因是df.assign()不支持直接用动态拼接的字符串作为关键字参数——Python语法不允许函数的关键字参数是动态计算的字符串。
以下是两种可行的解决方式:
字典解包实现循环赋值
把动态生成的列名和对应值存入字典,再通过**运算符解包字典作为assign的参数,同时注意重新赋值给原DataFrame(因为assign返回新对象,不会修改原数据):for col in df.columns: df = df.assign(**{'Test_' + str(col): 1})批量生成列(更高效)
避免循环,直接生成包含所有新列的字典,一次性完成赋值,性能更优:new_columns = {f'Test_{col}': 1 for col in df.columns} df = df.assign(**new_columns)
本质上是利用Python的字典解包特性,让动态字符串可以作为assign的列名参数,绕开关键字参数必须是字面量的限制。
内容的提问来源于stack exchange,提问作者bananaboy
相关产品推荐
相关产品推荐

