我有一个熊猫数据框,
[[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”,这就是我要为给定组执行的操作
答案 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循环仍然是最佳途径。