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

标签 python pandas dynamic dataframe formula

我希望在 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) for a, b in zip([1, 2], [3, 4, 5, 6])] 将返回返回 [(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

关于python - 创建基于动态更改列的公式以在 Pandas Dataframe 列中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817882/

相关文章:

Python Dataframe - 计算组的平均值并存储

python - 从 nginx 中删除不需要的前导斜杠

python - App Engine python 中的 HTML 到 PDF 转换

python - Pandas 数据框列到分层数据结构?

python - 按分数比较数据帧列中的值

postgresql - 如何在plpgsql中语法动态插入

python 合唱效果和音频数据的含义

python - 获取数据框中列的每个元素的第一个字符

c - 使用 malloc 给我的内存比预期的多吗?

mysql - 如何使用MySQL设计动态表