Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想从TextFileReader中删除重复项,并将剩余内容保存到单独的文件中_Python_Pandas - Fatal编程技术网

Python 我想从TextFileReader中删除重复项,并将剩余内容保存到单独的文件中

Python 我想从TextFileReader中删除重复项,并将剩余内容保存到单独的文件中,python,pandas,Python,Pandas,所以,我在大熊猫的TextFileReader对象中对块进行迭代,对于每个块,我都会删除\u重复项,然后保存到\u csv。不幸的是,当我尝试将所有内容保存在一个文件中时,它在文件达到4GB后崩溃。我假设我必须创建几个较小的csv,其大小不会超过4GB 现在我在更小的文件(300行)和更小的块上测试我的代码,但问题是它要么每个文件放一个块,如果 if int(os.stat(ostatni_plik).st_size) < 'approx. size of a chunk': if in

所以,我在大熊猫的TextFileReader对象中对块进行迭代,对于每个块,我都会删除\u重复项,然后保存到\u csv。不幸的是,当我尝试将所有内容保存在一个文件中时,它在文件达到4GB后崩溃。我假设我必须创建几个较小的csv,其大小不会超过4GB

现在我在更小的文件(300行)和更小的块上测试我的代码,但问题是它要么每个文件放一个块,如果

if int(os.stat(ostatni_plik).st_size) < 'approx. size of a chunk':
if int(os.stat(ostatni\u plik).st\u size)<'a chunk的近似大小':
或者它只返回一个空文件,如果

if int(os.stat(ostatni_plik).st_size) < 'much bigger or much smaller than a chunk':
if int(os.stat(ostatni\u plik).st\u size)<'比块大得多或小得多':
我的代码:

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+')
tp1=pd.read\u csv('C:\test\\test.csv',chunksize=50,iterator=True)
a=0
f=打开(路径2%str(a),“ab+”)
最后一个文件=路径2%str(a)
对于tp1中的块:
如果int(os.stat(最后一个文件).st_大小)<50:
chunk.drop\u重复项(inplace=False,subset=kol2')
chunk.to_csv(最后一个_文件,mode='ab+'))
其他:
a+=1
最后一个文件=路径2%str(a)
chunk.drop\u重复项(inplace=False,subset=kol2')
chunk.to_csv(最后一个_文件,mode='ab+'))
我不知道发生了什么事

谢谢你的回复

这对我很有用

初始化“test.csv” 处理1个文件 验证 单独文件的处理
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
# wrap key word args together for cleanliness
output_kwds = dict(index=None, mode='a')

chunker = pd.read_csv('test.csv', chunksize=10, iterator=True)

for i, chunk in enumerate(chunker):
    chunk.drop_duplicates(subset='label').to_csv('output%s.csv' % i, **output_kwds)