Python 大熊猫柱滞后值的计算日志

Python 大熊猫柱滞后值的计算日志,python,python-3.x,pandas,Python,Python 3.x,Pandas,我想得到一列的滞后值除以该列的对数 有一种简单的方法可以做到这一点,即添加一个新列,如下所示: 将熊猫作为pd导入 从numpy导入日志 df=pd.DataFrame({'reading':[2,3,4,5,6,7,8]}) df['lagged']=df.reading.shift(1) df['log']=df.apply(λx:log(x['lagged']/x['reading']),轴=1) 我想知道是否有一种更简单的方法可以做到这一点,而无需添加新列。你是对的,新列不是必需的,而

我想得到一列的滞后值除以该列的对数

有一种简单的方法可以做到这一点,即添加一个新列,如下所示:

将熊猫作为pd导入
从numpy导入日志
df=pd.DataFrame({'reading':[2,3,4,5,6,7,8]})
df['lagged']=df.reading.shift(1)
df['log']=df.apply(λx:log(x['lagged']/x['reading']),轴=1)

我想知道是否有一种更简单的方法可以做到这一点,而无需添加新列。

你是对的,新列不是必需的,而且
apply
这里也是多余的。将ed列分开,然后将
log
传递到
Series
以提高性能:

df['log'] = log(df.reading.shift() / df.reading)
print (df)
   reading       log
0        2       NaN
1        3 -0.405465
2        4 -0.287682
3        5 -0.223144
4        6 -0.182322
5        7 -0.154151
6        8 -0.133531

谢谢@jezrael!快速跟进,如何解释分母为零的情况?我可以在lambda中使用if-else结构,在else中使用np.nan,这里有类似的语法吗?@MehdiZare-Tested,然后得到
inf
-inf
,所以在我的解决方案之后应该被
nan
s替换,请检查