如何在Pandas中动态添加名称可变的自定义列
解决Pandas动态迭代添加列名的问题
问题出在你使用df.assign()的方式上:assign会把你传入的参数名直接作为新列的名称,你写column_name=[0,0,0],它就会创建名为column_name的列,而不是使用变量column_name的实际值。
下面是两种可行的解决方法:
方法1:直接通过索引赋值(最直观)
这是Pandas中添加新列最常用的方式,直接用变量作为列索引赋值:
import pandas as pd import numpy as np df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]}) for k in range(2): column_name = 'new_column_' + str(k) df[column_name] = [0, 0, 0]
方法2:使用字典解包给assign传参
如果坚持要用assign,可以把列名和对应值做成字典,然后用**解包成关键字参数传给assign:
import pandas as pd import numpy as np df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]}) for k in range(2): column_name = 'new_column_' + str(k) df = df.assign(**{column_name: [0, 0, 0]})
运行任意一种方法后,你都会得到期望的结果:
A B C new_column_0 new_column_1 0 1 4 7 0 0 1 2 5 8 0 0 2 3 6 9 0 0
内容的提问来源于stack exchange,提问作者Butters
相关产品推荐
相关产品推荐

