如何在使用 to_csv() 时保留列的数据类型

问题描述 投票:0回答:4

我正在使用 astype() 将列的 int 数据类型更改为 str 数据类型,并使用 to_csv() 将其保存到 csv 文件。但是通过 read_csv() 读取相同的 csv 文件表示数据类型仅为 int。我不想在读取文件时使用 dtype=str。 以下是以下信息:

>>df.info()
dtypes: int64(1), object(1)

>>df = df.astype(str)

>>df.info()
dtypes: object(2)

>>df.to_csv('answer.csv', index=False, encoding='utf-8')
>>df = pd.read_csv('answer.csv')

>>df.info()
dtypes: int64(1), object(1)

有什么方法可以在保存 csv 文件时仅使用更改后的数据类型而不是原始数据类型来保存列的数据类型。

python pandas export-to-csv data-analysis
4个回答
4
投票

如果 csv 是唯一选项,您可以通过创建 data_map csv 文件来满足要求。

当导出dataframe到csv时,你可以创建另一个csv,它存储列类型信息。

导入csv到dataframe时,可以读取data_map csv,提前转换成字典。使用它显式加载特定数据类型的 csv 数据。 dtype 参数可以提供这样的功能。

dtype : 列的类型名称或字典 -> 类型,默认无 数据或列的数据类型。例如。 {'a': np.float64, 'b': np.int32}(不支持 engine='python')。将 str 或 object 与合适的 na_values 设置一起使用以保留而不解释 dtype。

0.20.0 版本的新功能:支持 Python 解析器。 在这里输入链接描述


0
投票

将 pandas 导入为 pd

创建一个包含一列日期时间对象的示例数据框

df = pd.DataFrame({'日期': [pd.Timestamp('2022-01-01'), pd.Timestamp('2022-01-02')]})

使用 dtype 参数指定列的数据类型

dtypes = {'日期':'datetime64'}

在保留数据类型的同时将数据框写入 CSV 文件

df.to_csv('my_file.csv', index=False, dtype=dtypes)


0
投票

将 pandas 导入为 pd

创建示例 DataFrame

df = pd.DataFrame({'column1': [1, 2, 3], 'column2': ['A', 'B', 'C']})

设置column1的数据类型为int32

df['column1'] = df['column1'].astype('int32')

将DataFrame写入CSV文件,保留column1的数据类型

df.to_csv('output.csv', index=False, dtype={'column1': 'int32'})


-5
投票
df.to_csv('answer.csv', index=False, index_label = True, encoding='utf-8')

你可以使用

index_label = True

© www.soinside.com 2019 - 2024. All rights reserved.