gpt4 book ai didi

python - 向新列添加 1 个值并与其他列一起对其执行操作

转载 作者:行者123 更新时间:2023-12-01 09:09:23 26 4
gpt4 key购买 nike

我有一个数据框,

x     y     z    new_col
Nan NaN Nan 1
1 2 3 4
2 3 4 20
2 1 3 60

所以基本上公式是,1 of new_col 我们首先设置 1 * (1 + 3),然后 4 * (1 + 4),然后 20 * (1+3),依此类推..我应该如何先创建一个新列(new_col),然后在第一行加1,然后进行计算。

最佳答案

cumprod

df.assign(new_col=df.z.fillna(0).add(1).cumprod())

x y z new_col
0 NaN NaN NaN 1.0
1 1.0 2.0 3.0 4.0
2 2.0 3.0 4.0 20.0
3 2.0 1.0 3.0 80.0

尝试保留数据类型

df.assign(new_col=df.z.fillna(0, downcast='infer').add(1).cumprod())

x y z new_col
0 NaN NaN NaN 1
1 1.0 2.0 3.0 4
2 2.0 3.0 4.0 20
3 2.0 1.0 3.0 80
<小时/>

使用 Numba

这样做的目的是展示如何执行线性路径相关计算。 Numba 非常快,如果计算的时间复杂度为 O(N),那么您不必害怕在 Numba 中使用此循环。

如果您没有安装 numba 并且不想安装它,只需删除 @njit 装饰器即可。

from numba import njit

@njit
def f(a):
out = np.zeros_like(a)
out[0] = 1
for i, x in enumerate(a[1:], 1):
out[i] = out[i-1] * (1 + x)
return out

df.assign(new_col=f(df.z.values))

x y z new_col
0 NaN NaN NaN 1.0
1 1.0 2.0 3.0 4.0
2 2.0 3.0 4.0 20.0
3 2.0 1.0 3.0 80.0
<小时/>

使用int

df.assign(new_col=f(df.z.fillna(0).astype(int).values))

x y z new_col
0 NaN NaN NaN 1
1 1.0 2.0 3.0 4
2 2.0 3.0 4.0 20
3 2.0 1.0 3.0 80

关于python - 向新列添加 1 个值并与其他列一起对其执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com