我想获取列的滞后值的日志除以熊猫中的该列。
有一种简单的方法,可以通过添加一个新的列来做到这一点:
import pandas as pd
from numpy import log
df = pd.DataFrame({'reading': [2,3,4,5,6,7,8]})
df['lagged'] = df.reading.shift(1)
df['log'] = df.apply(lambda x: log(x['lagged']/ x['reading']), axis=1)
我想知道是否有一种更简单的方法,而无需添加新列。
答案 0 :(得分:0)
是的,没有必要添加新列,这里的apply
也是多余的。划分Series.shift
列,然后将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