【问题标题】:How to preserve datatype of column while using to_csv()如何在使用 to_csv() 时保留列的数据类型
【发布时间】:2019-08-24 09:07:51
【问题描述】:

我正在使用 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 文件时仅使用更改的数据类型而不是原始数据类型保存列的数据类型。

【问题讨论】:

  • CSV 没有类型,该信息永远不会保留。 CSV 只有字符串。阅读库正在解释任何类型。
  • 如果你想保留类型信息,你可能想尝试to_parquet而不是csv。
  • 但我只想将文件保存为 csv 格式。

标签: python pandas export-to-csv data-analysis


【解决方案1】:

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

导出dataframe到csv时,可以再创建一个csv,用来存储列类型信息。

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

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

0.20.0 版中的新功能:支持 Python 解析器。 enter link description here

【讨论】:

    【解决方案2】:
    df.to_csv('answer.csv', index=False, index_label = True, encoding='utf-8')
    

    你可以使用index_label = True

    【讨论】:

    • 这是完全错误的:index_label 仅存储数据帧的标题,并将其保存为输出 csv 中的第一行。没有存储有关列格式信息(整数、字符串、日期时间等)的信息
    • 这不会保留@bot 示例中提到的字符串。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2010-11-18
    • 2016-09-01
    • 2021-01-15
    • 1970-01-01
    • 2018-07-21
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多