所以,我在庞大的pandas的TextFileReader对象中迭代块,对于每个chunk,我做drop_duplicates,然后是to_csv。不幸的是,当我尝试将所有内容保存在一个文件中时,它在文件达到4GB后崩溃了。我假设我必须创建几个较小的csv,不超过4GB。
现在我在较小的文件(300行)和较小的块上测试我的代码,但问题是它要么为每个文件放一个块,如果
if int(os.stat(ostatni_plik).st_size) < 'approx. size of a chunk':
或者只返回一个空文件,如果
if int(os.stat(ostatni_plik).st_size) < 'much bigger or much smaller than a chunk':
我的代码:
tp1 = pd.read_csv('C:\test\\test.csv',chunksize=50,iterator=True)
a = 0
f = open(path2%str(a),'ab+')
last_file = path2%str(a)
for chunk in tp1:
if int(os.stat(last_file).st_size) < 50:
chunk.drop_duplicates(inplace=False,subset='kol2')
chunk.to_csv(last_file,mode='ab+')
else:
a += 1
last_file = path2%str(a)
chunk.drop_duplicates(inplace=False,subset='kol2')
chunk.to_csv(last_file,mode='ab+')
我不知道发生了什么。
感谢您的回复!
答案 0 :(得分:0)
这适合我。
cudaconfig = {'home':home, 'nvcc':nvcc,
'include': pjoin(home, 'include'),
'lib64': pjoin(home, 'lib')}
'test.csv'
df = pd.DataFrame(np.random.choice((1, 0), (200, 2)), columns=list('ab'))
df.insert(0, 'label', np.random.choice(list('ABCDE'), 200))
df.to_csv('test.csv', index=None)
# Initialize 'output.csv' with just the header
df.iloc[:0].to_csv('output.csv', index=None)
# wrap key word args together for cleanliness
output_kwds = dict(index=None, mode='a', header=None)
chunker = pd.read_csv('test.csv', chunksize=10, iterator=True)
for chunk in chunker:
chunk.drop_duplicates(subset='label').to_csv('output.csv', **output_kwds)
df_ = pd.read_csv('output.csv')
df_.label.describe()
count 90
unique 5
top D
freq 20
Name: label, dtype: object