Python 在dataframe中应用自己函数的转换

Python 在dataframe中应用自己函数的转换,python,pandas,dataframe,aggregation,Python,Pandas,Dataframe,Aggregation,我有一个dataframe,我需要在它上面进行一些数据操作,下面的代码通过“键”为我提供了列“Variable”分组的平均值: 使用“transform”的优点是,它返回的结果具有相同的索引,这非常有用 现在,我想让我的自定义函数在“transform”中使用它,而不是在我的函数上使用“mean”,需要两列或更多列,如: lambda (Variable, Variable1, Variable2): (Variable + Variable1)/Variable2 (我的实际函数比这个例子更

我有一个dataframe,我需要在它上面进行一些数据操作,下面的代码通过“键”为我提供了列“Variable”分组的平均值:

使用“transform”的优点是,它返回的结果具有相同的索引,这非常有用

现在,我想让我的自定义函数在“transform”中使用它,而不是在我的函数上使用“mean”,需要两列或更多列,如:

lambda (Variable, Variable1, Variable2): (Variable + Variable1)/Variable2
(我的实际函数比这个例子更复杂),我的数据帧的每一行都有Variable、Variable1和Variable2

我想知道我是否可以在“transform”中定义并使用这样一个自定义函数,以便能够使用相同的索引重新运行结果

谢谢,
Amir

不要对
变量调用transform
,在grouper上调用它,然后针对函数作为参数接收的数据帧调用变量:

df.groupby('key').transform(lambda x: (x.Variable + x.Variable1)/x.Variable2)

你为什么不使用simple

df.Variable+df.Variable1/df.Variable2

没有必要分组。例如,如果您想除以
df.groupby('key').Variable2.transform(“mean”)
,您仍然可以使用transform执行以下操作:


df.Variable+df.Variable1/df.groupby('key').Variable2.transform(“mean”)

谢谢!这里是我使用的:df.groupby('key').transform(lambda x:np.average(x.Variable))但是我得到了一个错误“无法连接非NDFrame对象”为什么x.Variable.mean()不起作用?x.Variable.mean()可能起作用,但我需要使用numpy函数,因为它们更复杂,例如weight average,std,使用numpy函数可以轻松计算。您提到的所有函数都存在于数据帧中
df.groupby('key').transform(lambda x: (x.Variable + x.Variable1)/x.Variable2)