我正在尝试透视具有10亿行和3列的数据。为此,我尝试以块的形式读取文件并在每个块上应用pivot。以下脚本仅旋转最后一行,但不旋转整个文件。有没有人知道如何在完整数据上应用它?
输入数据
r_id g_id exp
c1 g1 1
c2 g1 2
c3 g1 3
c1 g2 4
c2 g2 5
c3 g2 6
c1 g3 7
c2 g3 8
c3 g3 9
脚本 - 工作
import pandas as pd
my_data1 = pd.read_csv("test.input", sep='\t')
my_data2 = pd.DataFrame(my_data1)
my_data3 = my_data2.pivot('r_id', 'g_id', 'exp')
my_data3.to_csv("test.output", sep='\t')
块脚本 - 无法正常工作
import pandas as pd
chunker = pd.read_csv('test.input',sep='\t', chunksize=1)
tot = pd.DataFrame()
for piece in chunker:
tot = piece.pivot('r_id', 'g_id', 'exp')
tot.to_csv('test.output', sep='\t')
期望的输出
r_id g1 g2 g3
c1 1 4 7
c2 2 5 8
c3 3 6 9
答案 0 :(得分:2)
我自己解决了。感谢您的评论。
>>> chunker = pd.read_csv('test.input', sep='\t', chunksize=3)
>>> tot=pd.DataFrame()
>>> for piece in chunker:
... tot=tot.add(piece.pivot('r_id', 'g_id', 'exp'), fill_value=0)