python-3.x - 获取从第一个元素到最后一个元素的百分比变化
问题描述
我有这个数据集,我试图找到从每行元素到“9”列元素的百分比变化。
从功能上讲,我要做的是绘制股票价格全天的百分比变化,这样我就可以覆盖特定日期的平均百分比变化。
我试图调整熊猫的pct_change()
功能,但这只是从每个元素到下一个元素的百分比变化,这是适得其反的。
这是数据框的示例。
任何帮助或见解将不胜感激。
Hour 9 10 11 12 13 14 15 16
Date
2016-01-05 20.6475 20.5900 20.4225 20.6275 20.1600 19.6500 19.6250 19.4100
2016-01-06 21.3550 20.8675 20.6100 20.6525 20.8900 21.0125 21.0600 20.5125
2016-01-07 23.0075 22.7975 23.0050 23.5975 24.4675 25.2450 25.1600 24.9575
2016-01-08 22.9125 23.2400 23.8575 23.9475 24.0425 24.4000 25.7950 26.7625
2016-01-11 25.7500 25.9100 25.8800 25.9325 26.7650 26.4025 24.9425 24.2725
解决方案
你不能pct_change
在这里使用,你必须手动做:
>>> df.div(df.iloc[:, 0], axis=0).mul(100).sub(100)
Hour 9 10 11 12 13 14 15 16
Date
2016-01-05 0.0 -0.278484 -1.089720 -0.096864 -2.361061 -4.831093 -4.952173 -5.993462
2016-01-06 0.0 -2.282838 -3.488644 -3.289628 -2.177476 -1.603840 -1.381410 -3.945212
2016-01-07 0.0 -0.912746 -0.010866 2.564381 6.345757 9.725090 9.355645 8.475497
2016-01-08 0.0 1.429351 4.124386 4.517185 4.931806 6.492089 12.580469 16.803055
2016-01-11 0.0 0.621359 0.504854 0.708738 3.941748 2.533981 -3.135922 -5.737864
测试用例:
>>> df1 = pd.DataFrame({'A': [1, 2], 'B': [1.25, 2.25], 'C': [1.5, 1.5]})
>>> df.div(df.iloc[:, 0], axis=0).mul(100).sub(100)
A B C
0 0.0 25.0 50.0
1 0.0 12.5 -25.0
推荐阅读
- javascript - JavaScript 中的 setter 有什么用?
- python - 当我转换预测值时,这给了我 IndexError: invalid index to scalar variable
- python - 例如,区分 Python 中 pandas 日期列中的二月 (02) 月份和日期 02
- php - 如何通过 Laravel 中的查询生成器获取唯一记录?
- java - 带转码器的 SVG 到 ByteArray(字体系列问题)
- c# - wpf - 选项卡控件内的列表视图
- ssis - SSIS C# 脚本组件:写入包变量仍然为空
- azure - VpnClientRootCertificateDataInvalid:点到站点
- reactjs - 动态更改 ANTD Radio 颜色
- react-native - 为计步器反应原生 Google Fit api