Python df.mean不是序列的真实平均值吗?

Python df.mean不是序列的真实平均值吗?,python,pandas,Python,Pandas,我正在调试并遇到以下奇怪的行为。 我在计算熊猫系列的平均值,它包含了所有完全相同的数字。但是,pd.mean()给出了一个不同的数字 问题1:为什么这个系列的平均值是不同的数字 问题2:tmm[-1]==tmm.mean()现在给出False。有没有办法忽略这一微小的差异,让结果成为现实?我不喜欢abs(tmm[-1]-tmm.mean())

我正在调试并遇到以下奇怪的行为。 我在计算熊猫系列的平均值,它包含了所有完全相同的数字。但是,
pd.mean()
给出了一个不同的数字

问题1:为什么这个系列的平均值是不同的数字

问题2:
tmm[-1]==tmm.mean()
现在给出
False
。有没有办法忽略这一微小的差异,让结果成为现实?我不喜欢
abs(tmm[-1]-tmm.mean())

方法,因为不确定如何定义
xxx

import pandas as pd
import decimal

tmm = pd.Series(14.9199999999999999289457264239899814128875732421875,
                index=range(30))
for t in tmm:
    print(decimal.Decimal(t))
print('mean is')
print(decimal.Decimal(tmm.mean()))
结果:

14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
14.9199999999999999289457264239899814128875732421875
mean is
14.9200000000000034816594052244909107685089111328125

你的两个问题的答案基本上是这样的:

import pandas as pd
import decimal

tmm = pd.Series(decimal.Decimal(14.9199999999999999289457264239899814128875732421875),
                index=range(30))
for t in tmm:
    print(decimal.Decimal(t))
print('mean is')
print(decimal.Decimal(tmm.mean()))
确保在创建tmm时使用decimal.decimal构造函数,这非常重要。

尝试使用


float
s本质上容易出现精度错误,这就是为什么会得到不同的平均值。“我不喜欢
abs(tmm[-1]-tmm.mean())
”。好吧,那就糟了。不能指望浮点值完全相等。
tmm[20]== tmm.mean()

False

np.isclose(tmm[20], tmm.mean())
True