我正在尝试为单元格分配一个值,但 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/