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的行。
我如何用熊猫做到这一点?
答案 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)