python – 基于动态更改列创建公式以在Pandas Dataframe列中设置值

我希望在pandas数据框中创建一个列,它是一个变量/动态列名列表的函数.

典型的列创建将是:

df['new']=(df['one']*x)+(df['two']*y)+(df['3']*z)

其中x,y,z是来自另一个df的变量.

x 1.1
y 1.2
z 1.3
a 1.4
b 1.5
c 1.6

我想创建一个列,它将是一个变量列列表的函数.

例如,如果:

cols=['one','two']

然后公式将创建为:

df['new']=(df['one']*x)+(df['two']*y)

但是如果cols变为:

cols=['one','two','three','four']

然后公式将变为:

df['new']=(df['one']*x)+(df['two']*y)+(df['3']*z)+(df['four']*a)

我知道我必须在这里错过一些简单的东西.

最佳答案 使用zip将返回截断的对,因此[(a,b)为a,b in zip([1,2],[3,4,5,6])]将返回return [(1,3),( 2,4)].

df = pd.DataFrame(np.random.randn(5, 5), columns=list('ABCDE'))

x = 1.1
y = 1.2
z = 1.3
a = 1.4
b = 1.5
c = 1.6

var = [x, y, z, a, b, c]
cols = ['A', 'B', 'C']

>>> sum(df[col] * v for col, v in zip(cols, var))
0    0.729284
1    2.671124
2    1.804285
3    0.791489
4    1.818327
dtype: float64
点赞