我正在使用.pct_change()计算一组面板股票中的百分比变化。
close high low open volume t interval \
company date
arnc 2017-05-19 1.0900 1.09 1.0700 1.07 51450.0 0 1
2017-05-18 1.0700 1.12 1.0500 1.09 59094.0 0 1
2017-05-17 1.1200 1.15 1.1000 1.14 82340.0 0 1
2017-05-16 1.1500 1.18 1.1400 1.17 49186.0 0 1
2017-05-15 1.1700 1.18 1.1200 1.18 140224.0 0 1
2017-05-12 1.3000 1.65 1.1300 1.13 2016764.0 0 0
2017-05-11 1.1100 1.14 1.1000 1.13 11186.0 0 0
2017-05-10 1.1200 1.14 1.1100 1.11 7937.0 0 0
2017-05-09 1.1199 1.15 1.1000 1.13 4925.0 0 0
2017-05-08 1.1217 1.14 1.1208 1.14 16878.0 0 0
dan 2017-05-19 1.0900 1.09 1.0700 1.07 51450.0 0 1
2017-05-18 1.0700 1.12 1.0500 1.09 59094.0 0 1
2017-05-17 1.1200 1.15 1.1000 1.14 82340.0 0 1
df['pct_change'] = df.open.pct_change()
但是,我发现熊猫没有删除第一个观察值,而是根据前一个公司的最后一个观察值来计算公司的第一个百分比变化。
如何避免这种情况,并让大熊猫放弃给每个公司的第一个对象?
答案 0 :(得分:0)
似乎需要:
df['pct_change'] = df.groupby(level=0).open.transform(lambda x: x.pct_change())
print (df)
close high low open volume t interval \
company date
arnc 2017-05-19 1.0900 1.09 1.0700 1.07 51450.0 0 1
2017-05-18 1.0700 1.12 1.0500 1.09 59094.0 0 1
2017-05-17 1.1200 1.15 1.1000 1.14 82340.0 0 1
2017-05-16 1.1500 1.18 1.1400 1.17 49186.0 0 1
2017-05-15 1.1700 1.18 1.1200 1.18 140224.0 0 1
2017-05-12 1.3000 1.65 1.1300 1.13 2016764.0 0 0
2017-05-11 1.1100 1.14 1.1000 1.13 11186.0 0 0
2017-05-10 1.1200 1.14 1.1100 1.11 7937.0 0 0
2017-05-09 1.1199 1.15 1.1000 1.13 4925.0 0 0
2017-05-08 1.1217 1.14 1.1208 1.14 16878.0 0 0
dan 2017-05-19 1.0900 1.09 1.0700 1.07 51450.0 0 1
2017-05-18 1.0700 1.12 1.0500 1.09 59094.0 0 1
2017-05-17 1.1200 1.15 1.1000 1.14 82340.0 0 1
pct_change
company date
arnc 2017-05-19 NaN
2017-05-18 0.018692
2017-05-17 0.045872
2017-05-16 0.026316
2017-05-15 0.008547
2017-05-12 -0.042373
2017-05-11 0.000000
2017-05-10 -0.017699
2017-05-09 0.018018
2017-05-08 0.008850
dan 2017-05-19 NaN
2017-05-18 0.018692
2017-05-17 0.045872