Pandas表到Pyarrow的转换不适用于字符串到int

pw9qyyiw  于 2022-10-23  发布在  其他
关注(0)|答案(1)|浏览(202)

我有一个包含15000条记录的xlsx文件。我正在尝试序列化API服务的数据。读取文件并在HTTP响应中发送。
输入数据如下所示

account_name | dr_code | cr_code |amount | rate | category
A            | 12582   | 12582   |5000   |30    | POP
B            | 55AG98  | 55AG98  |2000   |40    | POP
C            | 5ER0AB  |         |5000   |2.2    | POP

代码如下

df = pandas.read_excel(file.xlsx, {usecols: [0, 1,4,6,7, 8]})
b = pyarrow.Table.from_pandas(df, preserve_index=True)

我得到这个错误pyarrow.lib。箭头无效:(“无法转换”55AG98“,类型为str”:尝试转换为int,'类型为object的列dr_code转换失败')
如果列的值具有相同的数据类型,但在多个数据类型上出错,则上述代码可以工作。

rta7y2nd

rta7y2nd1#

如果您不想让pyarrow猜测结果应该具有什么类型,那么在执行此转换时需要传递一个模式。
例如。

import pandas
import pyarrow
df = pandas.read_excel(file.xlsx, {usecols: [0, 1,4,6,7, 8]})
schema = pyarrow.schema([
    ('account_name', pa.string()),
    ('dr_code', pa.string()),
    ('cr_code', pa.string()),
    ('amount', pa.float64()),
    ('rate', pa.float64()),
    ('category', pa.string()),
])
b = pyarrow.Table.from_pandas(df, schema=schema, preserve_index=True)

相关问题