我是熊猫的新手,我想用你的帮助。
我有两个文件,其中一个很大(100G +),我需要根据一些列进行合并。我跳过了大文件中的某些行,因此将文件作为read_csv方法的缓冲区。
对,我尝试使用熊猫。但是,当我尝试使用pandas打开文件时,该进程被操作系统终止。
with open(self.all_file, 'r') as f:
line = f.readline()
while line.startswith('##'):
pos = f.tell()
line = f.readline()
f.seek(pos)
return pd.read_csv(f,sep='\t')
此后,我尝试使用dask而不是pandas,但是dask无法获得缓冲区作为read_csv方法的输入,并且失败。
return dd.read_csv(f,sep='\t')
如何打开大文件作为缓冲区并合并两个数据框?
谢谢!
答案 0 :(得分:0)
IIUC:
因此,由于it accepts keywords中的pandas.read_csv
,例如 year state household_id individual_id partner_id race inter2
1980 CA 23 2 1 3 1
1980 CA 23 1 2 1 1
1990 NY 43 4 2 1 0
1990 NY 43 2 4 1 0
,您仍然可以使用dd.read_csv
skiprows
的{{1}}示例,请参见this SO post
pandas
是整数(例如2),则skiprows
将跳过2行skiprows
是整数列表(例如[2,3]),则.read_csv
将跳过行号(在skiprows
文件中),从行号开始0 因此,您可以使用.read_csv
将两个文件读入.csv
文件中
.csv
然后将2个dask
与df_1 = dd.read_csv('file_1.csv', skiprows=2, sep='\t') # skip line numbers 1, 2
df_2 = dd.read_csv('file_2.csv', skiprows=[10, 16]) # skip line numbers 11, 17
.merge
DataFrame
如果这是您要的内容,则无需使用缓冲区。