Python中的DataFrame简单计算

时间:2019-07-15 07:38:55

标签: python dataframe

我不确定这是正常还是奇怪的结果,我在下面的简单DataFrame中得到了以下内容:浮动股票价格包含5个元素,其日期作为指数,如果我应用加号运算符,结果正确6位小数,但是如果我应用除法或减法,我只会收到1位小数,并且不确定结果是否正确,有人可以解释一下原因吗,否则在我应用除法时如何获得6个分数:

print(cl)

Out[45]: 
Date
2017-01-03 167.190002
2017-01-04 169.259995
2017-01-05 168.699997
2017-01-06 169.529999
2017-01-09 167.649994
Freq: B, Name: Close, dtype: float64

cl[1:]/cl[:-1]

Out[46]: 
Date
2017-01-03 NaN
2017-01-04 1.0
2017-01-05 1.0
2017-01-06 1.0
2017-01-09 NaN
Freq: B, Name: Close, dtype: float64

cl[1:]+cl[:-1]

Out[47]: 
Date
2017-01-03 NaN
2017-01-04 338.519990
2017-01-05 337.399994
2017-01-06 339.059998
2017-01-09 NaN
Freq: B, Name: Close, dtype: float64

cl[1:]-cl[:-1]

Out[48]: 
Date
2017-01-03 NaN
2017-01-04 0.0
2017-01-05 0.0
2017-01-06 0.0
2017-01-09 NaN
Freq: B, Name: Close, dtype: float64

2 个答案:

答案 0 :(得分:1)

计算很好。这是一种打印功能,它以某种格式显示浮点值。您可以像这样更改熊猫使用的默认格式:

import pandas as pd
pd.options.display.float_format = '{:,.6f}'.format

答案 1 :(得分:0)

当值等于零时,是否有理由要六位小数?当您将变量保留为DataFrame对象时,它将在运行操作时将索引对齐,因此您要减去或除以两个相同的数字并得到一或零。因此,没有必要显示更多的数字。如果您尝试将前四个数字除以后四个数字,而又没有按索引排列它们,请尝试

cl[1:].values/cl[:-1].values

运行此命令时,我得到四个数字输出,带八个小数位