在Pandas数据帧中应用您自己的函数转换

时间:2016-10-09 17:12:37

标签: python pandas dataframe aggregation

我有pandas数据帧,我需要对其进行一些数据操作,下面的代码为我提供了“Key”列的“变量”列的平均值:

df.groupby('key').Variable.transform("mean")

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

现在,我想拥有自定义功能并在“转换”中使用它而不是“意味着”更多我的功能需要两个或更多列,如:

lambda (Variable, Variable1, Variable2): (Variable + Variable1)/Variable2

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

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

谢谢, 阿米尔

2 个答案:

答案 0 :(得分:1)

不要对Variable调用变换,在石斑鱼上调用它,然后根据函数接收的数据帧调用变量作为参数:

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

答案 1 :(得分:0)

为什么不使用简单的

df.Variable + df.Variable1 / df.Variable2

没有必要groupby。例如,如果您希望除以df.groupby('key').Variable2.transform("mean"),您仍然可以使用变换进行以下操作:

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