python – pandas将列除以滞后值

python – pandas将列除以滞后值,第1张

概述我正在尝试将Pandas DataFrame列除以滞后值,在此示例中为1. 创建数据框.这个例子只有1列,即使我的真实数据有几十列 dTest = pd.DataFrame(data={'Open': [0.99355, 0.99398, 0.99534, 0.99419]}) 当我尝试这个矢量分区时(我是来自R的Python新手): dTest.ix[range(1,4),'Open'] / d 我正在尝试将Pandas DataFrame列除以滞后值,在此示例中为1.

创建数据框.这个例子只有1列,即使我的真实数据有几十列

dTest = pd.DataFrame(data={'Open': [0.99355,0.99398,0.99534,0.99419]})

当我尝试这个矢量分区时(我是来自R的Python新手):

dTest.ix[range(1,4),'Open'] / dTest.ix[range(0,3),'Open']

我得到这个输出:

NaN 1 1 NaN

但我期待:

1.0004327915052085
1.0013682367854484
0.9988446159101413

很明显,我对数据结构并不了解.我期待3个值,但它输出4.我缺少什么?

解决方法 您尝试失败的原因是索引的切片范围仅在中间2行重叠.你应该使用shift来移动行来实现你想要的:

In [166]:dTest['Open'] / dTest['Open'].shift()Out[166]:0         NaN1    1.0004332    1.0013683    0.998845name: Open,dtype: float64

你也可以使用div:

In [159]:dTest['Open'].div(dTest['Open'].shift(),axis=0)Out[159]:0         NaN1    1.0004332    1.0013683    0.998845name: Open,dtype: float64

您可以看到切片时索引是不同的,所以当使用/只有公共索引受到影响时:

In [164]:dTest.ix[range(0,'Open']Out[164]:0    0.993551    0.993982    0.99534name: Open,dtype: float64In [165]:dTest.ix[range(1,'Open']Out[165]:1    0.993982    0.995343    0.99419name: Open,dtype: float64

这里:

In [168]: dTest.ix[range(0,'Open'].index.intersection(dTest.ix[range(1,'Open'].indexOut[168]:Int64Index([1,2],dtype='int64')
总结

以上是内存溢出为你收集整理的python – pandas将列除以滞后值全部内容,希望文章能够帮你解决python – pandas将列除以滞后值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1197766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存