我试图为一个单元格赋值,但是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}}
我已经这样做了,但它没有帮助:
请帮助。
答案 0 :(得分:1)
pandas似乎假设您的数据类型是integer (int)
。
有几种方法可以解决这个问题,方法是在构造DataFrame时将数据类型设置为float
,或者通过更改(或转换)数据类型(也称为dtype
)来a float
即时。
>>> import pandas as pd
在制作这个简单的DataFrame时,我们提供了一个示例值(1
),DataFrame的列定义为在创建过程中包含floats
>>> 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
答案 1 :(得分:0)
您列的数据类型最有可能设置为int
。在分配值之前,您需要将其转换为float
或混合类型object
:
df = pd.DataFrame([1,2,3,4,5,6])
df.dtypes
# 0 int64
# dtype: object
df[0][4] = 7/125
df
# 0
# 0 1
# 1 2
# 2 3
# 3 4
# 4 0
# 5 6
df[0] = df[0].astype('O')
df[0][4] = 7 / 22
df
# 0
# 0 1
# 1 2
# 2 3
# 3 4
# 4 0.318182
# 5 6
df.dtypes
# 0 object
# dtype: object