使用python从大csv到拼花地板的转换

2024-10-03 15:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有csv文件,大约有200+列和1mil+行。当我从csv转换到python时,出现了一个错误:

     csv_file = 'bigcut.csv'
     chunksize = 100_000
     parquet_file ='output.parquet'
     parser=argparse.ArgumentParser(description='Process Arguments')
     parser.add_argument("--fname",action="store",default="",help="specify <run/update>")
     args=parser.parse_args()
     argFname=args.__dict__["fname"]
     csv_file=argFname
     csv_stream = pd.read_csv(csv_file, encoding = 'utf-8',sep=',', >chunksize=chunksize, low_memory=False)
     for i, chunk in enumerate(csv_stream):
        print("Chunk", i)
        if i==0:
           parquet_schema = pa.Table.from_pandas(df=chunk).schema
           parquet_writer = pq.ParquetWriter(parquet_file, parquet_schema, compression='snappy')
        table = pa.Table.from_pandas(chunk, schema=parquet_schema)
        parquet_writer.write_table(table)
     parquet_writer.close()

当我运行时,它会产生以下错误

^{pr2}$

我是新的pandas/pyarrow/python,如果有人有任何建议,我应该做的下一步调试是赞赏的。在


Tags: csvparserpandasstreamschema错误tableargs
2条回答

'utf-32-le' codec can't decode bytes in position 0-3

看起来库正在尝试解码utf-32-le中的数据,而您将csv数据读取为utf-8。在

所以你得告诉那个读者(皮亚罗.lib)读作utf-8(我不知道Python/Parquet,所以我不能提供完成此操作的确切代码)。在

csv有大约3英里的记录。我设法抓住了一个潜在的问题。在

列1的数据类型为string/text。不知何故,它们中的大多数是数字,但有些是与文本混合的,例如,许多是1000230400等,但很少有输入的,如5k、100k、29k

所以代码不知怎么的不喜欢它设置为number/int。在

你能给点建议吗?在

相关问题 更多 >