我有pandas数据帧,我需要对其进行一些数据操作,下面的代码为我提供了“Key”列的“变量”列的平均值:
df.groupby('key').Variable.transform("mean")
使用“transform”的优点是它使用相同的索引返回结果,这非常有用。
现在,我想拥有自定义功能并在“转换”中使用它而不是“意味着”更多我的功能需要两个或更多列,如:
lambda (Variable, Variable1, Variable2): (Variable + Variable1)/Variable2
(我的实际函数比这个例子更复杂),我的数据帧的每一行都有Variable,Variable1和Variable2。
我想知道我是否可以在“transform”中定义和使用这样的自定义函数,以便能够以相同的索引重新运行结果?
谢谢, 阿米尔
答案 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")