把1个浮点数,赋值个dataframe 中 df800.iloc[0,3]=5.2, 但是默认是 5,已经把这一列设置为float。
df800['shares'][0]=5.2
print(df800['shares'][0])
5
data= pd.read_excel(file_directory,index_col=0,dtype={'列1': float,'列2': float,'列3': float,})
应该是读区excel指定数据类型吧
更改下显示方式
你可以使用 Pandas 的 astype 方法将每一列的数据类型更改为浮点数:
df = pd.DataFrame([1.5, 2.6, 3.7])
print(df)
df = df.astype(float)
print(df)
望采纳!!!点击回答右侧采纳即可采纳!!!
在赋值浮点数到 Pandas dataframe 中时,如果该数据类型已经设置为 float,那么应该可以正常保存浮点数,不会自动取整。
如果在赋值时数值被取整了,那么可能是因为在赋值时发生了精度丢失,导致数值被取整。这种情况通常发生在将一个很大或很小的浮点数赋值给 Pandas dataframe 时。
为了避免这种情况,可以使用 numpy 库的 float128 数据类型来保存浮点数,这种数据类型可以提供更高的精度,避免精度丢失的问题。
例如,可以使用以下代码来保存浮点数:
import numpy as np
#将浮点数 5.2 使用 float128 类型保存到 Pandas dataframe 中:
import pandas as pd
df = pd.DataFrame(columns=['float_column'])
df['float_column'][0] = np.float128(5.2)
print(df['float_column'][0])
#输出:5.2
如果数据类型是 float 类型,那么赋值时应该不会出现取整的情况。可能是在打印的时候只显示了整数部分,所以看上去像取整了。可以试试使用 print("%.2f" % df800['shares'][0]) 来打印浮点数,看看是否能够正常显示小数部分。
如果使用的是 pandas 的版本比较旧的话,也有可能是版本的原因导致的精度丢失。在更新 pandas 到最新版本后再可以试试赋值看看是否能够解决问题。
如果使用的是 Python 2.x,那么在进行除法运算时,结果会自动转换为整数
可以使用 from future import division 来使用 Python 3.x 中的除法运算符 /。
仅供参考,望采纳,谢谢。