有没有一种简单的方法可以用多行条目拆分大型 CSV 文件?
Is there a easy way to split a large CSV file with multiline entries?
您好,我有一个巨大的 14Gb CSV 文件,其中的条目跨越多行,想要一种简单的方法来拆分它,顺便说一句,拆分命令将不起作用,因为它不知道一行中有多少列而且会剪错。
import os
import pandas as pd
import numpy as np
data_root = r"/home/glauber/Projetos/nlp/"
fname = r"blogset-br.csv.gz"
this_file = os.path.join(data_root,fname)
assert os.path.exists(this_file), this_file
this_file
column_names = ['postid', 'blogid', 'published', 'title', 'content', 'authorid', 'author_displayName', 'replies_totalItems', 'tags']
parse_dates = ['published']
df_iterator = pd.read_csv(this_file,
skiprows=0,
compression='gzip',
chunksize=1000000,
header=None,
names = column_names,
parse_dates=parse_dates,
index_col=1)
new_df = pd.DataFrame()
count = 0
for df in df_iterator:
filename = 'blogset-br-' + str(count ) + '.csv'
df.to_csv(filename)
count += 1
这是我能找到的最简单的方法
使用 XSV (https://github.com/BurntSushi/xsv) 非常简单:
xsv split -s 10000 ./outputdir inputFile.csv
-s 10000
设置写入每个块的记录数。
您好,我有一个巨大的 14Gb CSV 文件,其中的条目跨越多行,想要一种简单的方法来拆分它,顺便说一句,拆分命令将不起作用,因为它不知道一行中有多少列而且会剪错。
import os
import pandas as pd
import numpy as np
data_root = r"/home/glauber/Projetos/nlp/"
fname = r"blogset-br.csv.gz"
this_file = os.path.join(data_root,fname)
assert os.path.exists(this_file), this_file
this_file
column_names = ['postid', 'blogid', 'published', 'title', 'content', 'authorid', 'author_displayName', 'replies_totalItems', 'tags']
parse_dates = ['published']
df_iterator = pd.read_csv(this_file,
skiprows=0,
compression='gzip',
chunksize=1000000,
header=None,
names = column_names,
parse_dates=parse_dates,
index_col=1)
new_df = pd.DataFrame()
count = 0
for df in df_iterator:
filename = 'blogset-br-' + str(count ) + '.csv'
df.to_csv(filename)
count += 1
这是我能找到的最简单的方法
使用 XSV (https://github.com/BurntSushi/xsv) 非常简单:
xsv split -s 10000 ./outputdir inputFile.csv
-s 10000
设置写入每个块的记录数。