如何在大块数据中使用pandas中的pivot

时间:2017-05-29 10:18:38

标签: pandas pivot

我正在尝试透视具有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

1 个答案:

答案 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)