pandas中eval函数可以以字符的形式传入计算表达式,对于存在大量复杂计算的情形,可以把excel中公式稍作修改,直接用于pd计算,省去pd中建模过程。
但现在碰到问题,如果使用eval函数,求相邻两行平均值?
import pandas as pd
df = pd.DataFrame({ '年份': ['15年', '16年', '17年'],
'人口': [13.97, 14.28, 15.26],
'GDP': [14.34, 15.43, 16.08],
})
"""
年份 人口 GDP
0 15年 13.97 14.34
1 16年 14.28 15.43
2 17年 15.26 16.08
"""
df['平均GDP1'] = (df['GDP'].shift(-1)+df['GDP'])/2 # 常规公式,没有问题
df['平均GDP2'] = df.eval(' (GDP.shift(-1)+GDP)/2') # 本行代码报错!通过eval实现上面一行代码功能?