【发布时间】:2021-10-07 21:07:36
【问题描述】:
我在本地机器(Python 3.9.5,pandas 0.25.3)和远程机器(Python 3.7.4,pandas 0.25.1)上的相同输入上运行相同的代码,我收到了不同的结果。
输入是:
jsn_str = '{"user_1":{"77":4514.0,"44":7867.54,"67":10406.54,"12":7151.0,"56":1921.0,"36":9471.0,"47":2021.0,"25":3211.0,"26":2021.0,"15":4651.0,"71":8805.0,"62":352.0}}'
我使用代码:
pd.DataFrame(json.loads(jsn_str), index=(str(x) for x in range(93))).fillna(method='ffill').fillna(0).sum(axis=1).rolling(window=1).mean().fillna(0).unique()
在我的本地机器上,我收到了预期的结果:
array([ 0. , 7151. , 4651. , 3211. , 2021. , 9471. ,
7867.54, 1921. , 352. , 10406.54, 8805. , 4514. ])
但是在远程机器上,结果是:
array([ 0. , 7151. , 4651. , 3211. , **2021.** , 9471. ,
**7867.54**, **7867.54**, **2021.** , 1921. , 352. , 10406.54,
8805. , 4514. ])
我又出现了 1 次 2021. 和 7867.54,因为由于某种原因,当我申请 rolling(window=1).mean() 时,我得到了浮点的随机结果:
2021.000000000001,2021.0,7867.540000000001,7867.540000000002,当我取唯一值时,上面的所有值都会被考虑。
这种现象发生在我拥有的更多示例中,我无法理解为什么以及何时突然随机发生。 (而且我无法从我的代码中删除 rolling(window=1).mean())
有人遇到过这种行为吗?有什么建议吗?
【问题讨论】:
-
远程机器上的硬件是否不同?不同类型的处理器,32 位还是 64 位,操作系统,诸如此类?
-
这两个结果似乎匹配 32 位和 64 位浮点 dtype 行为。
标签: python pandas rolling-computation