创建数据框.这个例子只有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将列除以滞后值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)