组合TSV文件,为Apache Arrow表创建一个新的TSV



我有两个TSV文件(header.TSV&data.TSV(header.TSV包含1000多个列名,data.tsvs包含约50 K条记录(列值也为NULL(。我想通过将data.TSV文件附加到header.TSV来创建一个新的TSV文件(比如说组合的.TSV(。这样做的原因是创建一个最终的TSV,它可以将列名和数据放在一起,并尝试在创建Apache Arrow表时避免错误。

**header.tsv**
field1 field2 field3 field4 ... field1000 
**data.tsv**
eng-en    1er2p  NULL  ert,yu1  ...  2020-09-16
frnch-fr  2er3p  NULL  ert,yu2  ...  2020-09-16
.
.
.
ltn-lt    50Ker  NULL  ert,yu50K ... 2020-09-16

所需TSV

**combined.tsv**
field1    field2   field3   field4    ...   field1000
eng-en    1er2p    NULL     ert,yu1   ...   2020-09-16
frnch-fr  2er3p    NULL     ert,yu2   ...   2020-09-16
.
.
.
ltn-lt    50Ker    NULL     ert,yu50K ...   2020-09-16

我使用过类似的SHELL命令

paste header.tsv data.tsv > combined.tsv

然后尝试创建pyarrow表。

import pyarrow as pa
import pyarrow.csv as csv
combined = csv.read_csv('combined.tsv',parse_options=csv.ParseOptions(delimiter="t"))

我在执行上述时出现以下错误

ArrowInvalid: CSV parse error: Expected 2010 columns, got 1006

header.tsv文件正好有1005列,可以解析此header.tsv文件以创建pyarrow表,但不能解析data.tsv。

import pyarrow as pa
import pyarrow.csv as csv
header = csv.read_csv('headers.tsv',parse_options=csv.ParseOptions(delimiter="t")) 
head_show=header.to_pandas()
head_show.head()

我甚至尝试使用pyarrow中的concat_tables方法,方法是在下面执行

import pyarrow as pa
final_combined = pa.concat_tables(header,data)

错误

TypeError: Cannot convert pyarrow.lib.ChunkedArray to pyarrow.lib.Table

如果我的方法不对,请纠正我。

要创建组合的CSV,您需要连接标题和数据:

cat header.csv data.csv > combined.csv

使用";粘贴";将执行";"水平";串联-合并第一、第二、第三。。。每个文件中的行,形成长行。

相关内容

最新更新