python - Pandas 将数字四舍五入为 0

标签 python pandas

我正在尝试为单元格分配一个值,但 Pandas 将其四舍五入为零。 (我使用的是Python 3.6)

in: df['column1']['row1'] = 1 / 331616

in: print(df['column1']['row1'])

out: 0

但是如果我尝试将此值分配给标准 Python 字典键,它就可以正常工作。

in: {'column1': {'row1': 1/331616}}

out: {'column1': {'row1': 3.0155360416867704e-06}}

我已经这样做了,但没有帮助:

  • pd.set_option('精度',50)
  • pd.set_option('chop_threshold', .00000000005)

请帮忙。

最佳答案

pandas 似乎假定您的数据类型是整数 (int)

有多种方法可以解决此问题,可以在构造 DataFrame 时将数据类型设置为 float,或者通过更改(或转换)数据类型(也称为 dtype) )动态地转换为float

在构造过程中设置数据类型(dtype):

>>> import pandas as pd

在制作这个简单的 DataFrame 时,我们提供了一个示例值 (1),并且 DataFrame 的列在创建过程中被定义为包含 float

>>> df = pd.DataFrame([[1]], columns=['column1'], index=['row1'], dtype=float)
>>> df['column1']['row1'] = 1 / 331616
>>> df
       column1
row1  0.000003

动态转换数据类型:

>>> df = pd.DataFrame([[1]], columns=['column1'], index=['row1'], dtype=int)
>>> df['column1'] = df['column1'].astype(float)
>>> df['column1']['row1'] = 1 / 331616
df
       column1
row1  0.000003

关于python - Pandas 将数字四舍五入为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749995/

相关文章:

python - 如何使用多个打印参数将打印重定向到日志记录?

python - Sympy:从数值上找到符号函数的根

android - 同步数据集 - 多个用户,多个时间戳

python - Pandas - 从每组的最大日期中减去最小日期

python - 使用 pip 安装后找不到 jupyter lab 命令

python - 训练、验证、测试批量大小比率

用于将 Django 与 Facebook 集成的 Python 库

python - 用数据框中列表中的值替换索引

python - 使用集合创建列会复制集合 n 次

python - 以表格式使用 hdf 时内存泄漏?