Python:在文件中写入某些行

Python:在文件中写入某些行,python,pandas,Python,Pandas,csv文件太大了,所以我正在逐块读取它。 因此,我将read_csv与chunksize一起使用 我想存储所有行,其中最后一个条目在一个文件中的值为1,其他所有行的最后一个条目在另一个文件中的值为0 假设它是这样的: ID A B C 0 0.0 0.1 1 1 0.1 0.2 0 2 0.1 0.0 1 first = True df = pd.read_csv('file.csv', chunksize=1e5) for chunk in df:

csv文件太大了,所以我正在逐块读取它。 因此,我将read_csv与chunksize一起使用

我想存储所有行,其中最后一个条目在一个文件中的值为1,其他所有行的最后一个条目在另一个文件中的值为0

假设它是这样的:

ID   A    B   C
0   0.0  0.1  1
1   0.1  0.2  0
2   0.1  0.0  1
first = True
df = pd.read_csv('file.csv', chunksize=1e5)
for chunk in df:
    if first:
        chunk[chunk['C'] == 1].to_csv('ones.csv', header=True)
        chunk[chunk['C'] == 0].to_csv('zero.csv', header=True)
        first = False
    chunk[chunk['C'] == 1].to_csv('ones.csv', header=False)
    chunk[chunk['C'] == 0].to_csv('zero.csv', header=False)
因此,我想将ID为0和2的行存储在一个文件中,将ID为1的行存储在另一个文件中

我该如何处理熊猫呢?

发帖:

而是制作两个数据帧:

df0 = pd.concat([ chunk[chunk["C"] == 0] for chunk in reader ])
df1 = pd.concat([ chunk[chunk["C"] == 1] for chunk in reader ])

然后独立保存每个数据帧

我只需这样做:

ID   A    B   C
0   0.0  0.1  1
1   0.1  0.2  0
2   0.1  0.0  1
first = True
df = pd.read_csv('file.csv', chunksize=1e5)
for chunk in df:
    if first:
        chunk[chunk['C'] == 1].to_csv('ones.csv', header=True)
        chunk[chunk['C'] == 0].to_csv('zero.csv', header=True)
        first = False
    chunk[chunk['C'] == 1].to_csv('ones.csv', header=False)
    chunk[chunk['C'] == 0].to_csv('zero.csv', header=False)

但是我一块一块地读,根据文档,我得到了一个TextFileReader对象,而不是一个数据框。为了考虑块的大小,我更新了它。TextFileReader对象是一个生成器,因此需要对其进行迭代。你可以用一个列表来创建一组较小的数据帧,然后将它们连接在一起。你说的生成器是什么意思?数据是按需生成的,因此在调用该数据块时,它只占用每个数据块的内存:刚刚出现了其他内容。如果我将chunk[“C”]==1与If-like-If chunk[“C”]==1结合使用,我会得到ValueError:序列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。你知道如何克服这个问题吗?