熊猫数据框指数衰减求和

时间:2019-01-18 16:54:20

标签: python pandas

我有一个熊猫数据框,

[[1, 3],
[4, 4],
[2, 8]...
]

我要创建一个包含以下内容的列:

1*(a)^(3)   # = x
1*(a)^(3 + 4) + 4 * (a)^4  # = y
1*(a)^(3 + 4 + 8) + 4 * (a)^(4 + 8) + 2 * (a)^8  # = z
...

其中“ a”代表某些值。
东西:1、4、2来自第一列,重复的3、4、8来自第二列 使用某种形式的transform / apply是否可能?

基本上得到:

[[1, 3, x],
[4, 4, y],
[2, 8, z]...
]

其中x,y,z是新列中的各个总和(我希望它们彼此相邻)

在数据帧上正在执行一个“ groupby”,这就是我要为给定组执行的操作

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么应该可以:

df = pd.DataFrame([[1, 3], [4, 4], [2, 8]], columns=['a', 'b'])
a = 42
new_lst = []

for n in range(len(lst)):
    z = 0
    i = 0
    while i <= n:
        z += df['a'][i]*a**(sum(df['b'][i:n+1]))
        i += 1
    new_lst.append(z)
df['new'] = new_lst

更新:

看到您正在使用熊猫并已使用数据框方法进行了更新。由于您需要混合使用来自不同行的值,因此不确定是否有一种简单的方法可以应用Apply。我认为此for循环仍然是最佳途径。