转换为镶木地板的 csv 文件将“e0”添加到值的末尾

Posted

技术标签:

【中文标题】转换为镶木地板的 csv 文件将“e0”添加到值的末尾【英文标题】:csv file converted to parquet adds 'e0' to end of values 【发布时间】:2021-04-12 16:24:19 【问题描述】:

我正在运行测试以填充 Redshift 中的表。我将模拟数据添加到 csv 文件中,然后使用 pandas 转换为镶木地板。我正在使用 COPY 命令将数据从 s3 存储桶中的 parquet 文件获取到我的 Redshift 数据库。

我得到了错误:

    'file has an incompatible Parquet schema for column' 

这些列是 DECIMAL (12,3)。 我检查了 s3 控制台,发现在查看转换后的 parquet 文件时,'e0' 已添加到值的末尾,例如:

    "id":2873130000000000000,"field1":9.335e0,"field2":9.335e0

我转换为镶木地板的代码是标准的:

    import pandas as pd
    df = pd.read_csv('test.csv')
    df.to_parquet('test.parquet')

在这一点上,这些附加值似乎是我收到“不兼容”错误的原因。为什么要添加这些值,我该如何防止呢?

【问题讨论】:

【参考方案1】:

看起来您正在用科学计数法编写包含这些字段的 parquet 文件。这就是 e 代表“十次方”的地方,例如。 1.1e2 等于 110。请检查您的 pandas 格式。

【讨论】:

以上是关于转换为镶木地板的 csv 文件将“e0”添加到值的末尾的主要内容,如果未能解决你的问题,请参考以下文章

如何将 csv 文件转换为镶木地板

Hive/Bigsql Pandas 将浮点数转换为整数,使用 pyarrow 将空值转换为镶木地板文件

将 avro 转换为镶木地板(也许使用 hive?)

如果 csv 列标题包含空格,则在 spark 中将 csv 转换为 parquet 会出错

Spark SQL Java GenericRowWithSchema无法强制转换为java.lang.String

使用胶水保存为镶木地板文件时会修改数据帧标头