在 pandas 数据框中应用函数

Apply function in a pandas dataframe

我已经弄清楚如何将函数应用于 pandas 数据帧的整个列或子部分,而不是编写一个逐个修改每个单元格的循环。

是否可以编写一个函数,在执行上述操作时将数据框中的单元格作为输入?

例如。一个函数,在当前单元格中 returns 前一个单元格的值乘以前一个单元格之前的单元格的乘积。我现在在一个循环中逐行执行此操作,不出所料,它的效率非常低。我是 python.

的新手

对于您提到的情况(将前两个单元格相乘),您可以执行以下操作(循环遍历每一列,但不是每个单元格):

import pandas as pd

a = pd.DataFrame({0:[1,2,3,4,5],1:[2,3,4,5,6],2:0,3:0})

for i in range(2,len(a)):
    a[i] = a[i-1]*a[i-2]

这将使 a 前两列中的每一列相乘

如果你想沿着行而不是列执行这个操作,你可以 transpose 数据帧(然后在执行循环后再次转置它以将其恢复为原始格式)

编辑

其实要的是两列前几行的元素和两列当前行的元素的乘积。这可以使用 shift:

来完成
import pandas as pd

df= pd.DataFrame({"A": [1,2,3,4], "B": [1,2,3,4], "C": [2,3,4,5], "D": [5,5,5,5]})

df['E'] = df['A'].shift(1)*df['B'].shift(1)*df['C']*df['D']

df['E']

产生:

0      NaN
1     15.0
2     80.0
3    225.0

这样就可以了,shift 可以根据您的需要前进和后退:

df['Column'] = df['Column'].shift(1) * df['Column'].shift(2)