Python 用于计算系列中的变化的过于复杂的表达式

Python 用于计算系列中的变化的过于复杂的表达式,python,pandas,Python,Pandas,我试图在一个数据帧中找到一系列的日志变化(即一个点和下一个点之间的算术变化)。虽然这段代码可以工作,但它似乎过于复杂;我肯定在做坏事,还有更简单的方法吗 df['Change']=(lambda x:x.sub(x.shift(1))(df['stat'].map(lambda x:math.log(x))) 谢谢 您可以将numpy(矢量化)对数与panda的: 嗯,我首先想到的是,第二个lambda是不必要的,它会减慢速度。您可以将其替换为math.log,但几乎可以肯定,矢量化操作有更好的

我试图在一个数据帧中找到一系列的日志变化(即一个点和下一个点之间的算术变化)。虽然这段代码可以工作,但它似乎过于复杂;我肯定在做坏事,还有更简单的方法吗

df['Change']=(lambda x:x.sub(x.shift(1))(df['stat'].map(lambda x:math.log(x)))

谢谢

您可以将numpy(矢量化)对数与panda的:


嗯,我首先想到的是,第二个
lambda
是不必要的,它会减慢速度。您可以将其替换为
math.log
,但几乎可以肯定,矢量化操作有更好的选择。不幸的是,我对Pandas还不太熟悉,无法正确地将其矢量化。与其使用第一个
lambda
,不如将
x=df['stat'].map(math.log)
保存起来,然后将
df['Change']=x.sub(x.shift(1))
作为单独的一行进行操作。这样您就可以将
np.log
作为一个单独的行了。
>>> df['Change'] = np.log(df['stat']).diff()