std()计算时,如果结果过小,被四舍五入为0
df['std'] = df['mean'].rolling(n1, min_periods=1).std(ddof=0)

其他函数暂未出现此问题
问题定位:
(一)Python3.9环境
本地问题环境pandas版本查看:
import pandas as pd
pd.show_versions()
pd.__version__

估计是版本过高造成
linux服务器计算正常环境中,查询pandas版本

anaconda prompt中尝试版本退回
pip install pandas==0.20.3
python3.9环境中安装失败

可能python版本高了不支持低版本的pandas
重新安装低版本pandas
conda install pandas=0.20.3

果然在3.9中不能安装
(二)Python3.7环境
切换回Python3.7
conda list
查看pandas版本:

import pandas
弹出:
ImportError: C extension: No module named ‘pandas._libs.tslibs.conversion’ not built. If you want to import pandas from the source directory, you may need to run ‘python setup.py build_ext --inplace --force’ to build the C extensions first.

估计是python版本升级过造成的问题
直接卸载了重装
conda uninstall pandas
conda install pandas
指定环境安装
$conda install -n Python3.7 pandas=0.25.3
问题解决
在Python3.9环境中,使用`df['std']=df['mean'].rolling(n1,min_periods=1).std(ddof=0)`计算std时,遇到结果过小被四舍五入为0的问题。初步怀疑是版本过高导致。尝试降级pandas到0.20.3失败,因为不支持Python3.9。在Python3.7环境下,发现pandas导入错误,可能是升级Python版本引起。通过卸载并重新安装pandas解决了问题,最终在Python3.7下成功安装了pandas 0.25.3。
1272

被折叠的 条评论
为什么被折叠?



