python - Pyarrow 使用 Pandas 不断将字符串转换为二进制

标签 python python-2.7 apache pandas parquet

我正在尝试使用 python2.7 中的 pandas 和 pyarrow 将 csv 文件转换为 Parquet 。

我在将字符串从 pa.Table.from_pandas(df) 转换为字符串时遇到问题。它不断将数据类型转换为“二进制”,这让 AWS Glue 非常不高兴。

我尝试了一个自定义的模式,但它不起作用。

fields = []
for name, type in dtypes.items():
        fields.append(pa.field(name, type))
my_schema = pa.schema(fields)
df = pd.read_csv(StringIO(file), delimiter="\t")
table = pa.Table.from_pandas(df)

以前是在读取 csv 时指定数据类型,但这也不起作用。还尝试了 replace_schema_metadata() 但这并没有做太多,因为它不是实际的模式。

最佳答案

Python 2的str类型其实和Parquet定义BINARY的内容是一样的,因此所有有str对象的列都会被保存为binary .在 Python 3 中,它们应该被正确加载为 bytes。要在 Parquet 中将列存储为字符串/UTF-8,您需要将列转换为 unicode 对象。

关于python - Pyarrow 使用 Pandas 不断将字符串转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49504426/

相关文章:

android - 使用 Python 2.7 在 Android 中进行开发

apache - SVN Repo 给出 404 not Found

java - 在 apache tomcat 问题 : no permission for reading/writing a file 上部署一个 war 文件

Python 使用 if 语句验证多个值

python - 从Google Cloud yalm python应用程序检索firebase数据库数据

python - Python 2.7 中的 `id` 函数,`is` 运算符、对象标识和用户定义的方法

python - 这个 pywinauto 异常从哪里获取它的列表?

java - 在多台机器上跨 tomcat 共享 war

Python:Json.load 给出列表并且无法从中解析数据

python - 基于 BERT 的 NER 模型在反序列化时给出不一致的预测