我只能使用4G内存。 文件的信息如下:
File | Number of Rows | Num of cols | Header name
1st csv | 2,000,000+ rows | 3 cols. | id1,id2,...
2nd csv | 10,000,000+ rows| 24 cols. | id2,...
3rd csv | 170 rows | 5 cols. | id1,...
我想做的是:
file1=pd.read_csv('data1.csv')
file2=pd.read_csv('data2.csv')
file3=pd.read_csv('data3.csv')
data=pd.merge(file1,file3,on='id1',how='left')
data=pd.merge(data,file2,on='id2',how='left')
#data to csv files: merge.csv
但内存不够,我尝试了两种方法: 第一种方式是:
for data1_chunk in data1:
for data2_chunk in data2:
data = pd.merge(data1_chunk, data2_chunk, on='id2')
data_merge = pd.concat([data_merge, data])
第二种方式是:
for data1_chunk, data2_chunk in zip(data1, data2):
data_merge = pd.merge(data1_chunk, data2_chunk, on='id2', how='left')
但它们不起作用。
有没有办法使用para chunksize
来处理大型csv文件?
还是其他更好或更简单的方法?
问题How to read a 6 GB csv file with pandas只说明如何处理一个大的csv文件而不是两个或更多,我想知道如何处理'迭代器'两个或多个内存有限的文件
答案 0 :(得分:1)
我发现使用下面的代码可能在逻辑上起作用:
Dim StrURL
Dim ObjhShell
StrURL="http://localhost:7171/"
Set ObjShell = CreateObject("Wscript.Shell")
'ObjShell.Run ""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security"
ObjShell.Run "chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security"
我认为需要更多次但内存更少。