首页 > 解决方案 > pandas.read_csv 将十进制零填充浮点列转换为 int

问题描述

我将 Pandas DataFrame 存储在 .csv 文件中,该文件有一列包含整数数据,但由于遗留原因,数据库系统将其视为浮点数,因此 .csv 也需要将其存储为浮点数。与 一起存储时df.to_csv,它保留零填充的小数部分,因此 .csv 文件中的列如下:

IntNumber
3.0
45.0
123.0
...

但是当我用 加载它时pandas.from_csv,它会推断出类型,int64尽管尾随零。我查看了pandas.read_csv文档,看起来我可以手动将数据类型指定为float64,但我认为有多个实例需要检测为float而不是int64. 当出现尾随零时,让它自动推断类型为浮点数会很有用,这可能吗?

我如何加载 csv 的片段,此时它推断出列的类型dataframeint64

dataframe = pandas.read_csv("<csv_name>", index_col=0, parse_dates=True)

标签: pythonpandascsvdataframe

解决方案


我无法复制您的问题,请参见下面的示例。

from io import StringIO
import pandas as pd

mystr = StringIO("""IntNumber
3.0
45.0
123.0""")

df = pd.read_csv(mystr)

#pandas 0.19.2, python 3.6.0
print(df.dtypes)

IntNumber    float64
dtype: object

#pandas 0.23.1, python 3.6.4
print(df.dtypes)

IntNumber    float64
dtype: object

推荐阅读