Python Pandas:在文件中写入某些行

时间:2016-09-21 21:25:43

标签: 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

所以,我想在一个文件中存储ID为0的行,在另一个文件中存储ID为1的行。

我如何用熊猫做到这一点?

2 个答案:

答案 0 :(得分:2)

来自this帖子:

reader = pd.read_csv('big_table.txt', sep='\t', header=0, 
                     index_col=0, usecols=the_columns_i_want_to_use, 
                     chunksize=10000)

df = pd.concat([ chunk.ix[rows_that_I_want_] for chunk in reader ])

但是改为制作2个数据框:

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

然后单独保存每个数据框

答案 1 :(得分:0)

我会这样做:

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)