基于动态更改列创建公式以在 Pandas Dataframe 列中设置值
Create Formula Based on Dynamically Changing Columns to Set Values in Pandas Dataframe Column
我想在 pandas 数据框中创建一个列,它是 variable/dynamic 列名列表的函数。
典型的列创建是:
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)
我知道我一定错过了一些简单的东西。
试试这个:
cols=['one', 'two']
df['new'] = df[cols].sum(axis=1)
使用 zip 将 return 截断对,因此 [(a, b) for a, b in zip([1, 2], [3, 4, 5, 6])]
将 return 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
我想在 pandas 数据框中创建一个列,它是 variable/dynamic 列名列表的函数。
典型的列创建是:
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)
我知道我一定错过了一些简单的东西。
试试这个:
cols=['one', 'two']
df['new'] = df[cols].sum(axis=1)
使用 zip 将 return 截断对,因此 [(a, b) for a, b in zip([1, 2], [3, 4, 5, 6])]
将 return 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