Pandas 如何在数据块上使用pivot

Pandas 如何在数据块上使用pivot,pandas,pivot,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

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

我自己解决了。谢谢你的评论

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

唯一的
g_id
和唯一的
r_id
的编号是多少?更新@jezrael。谢谢。我想说这取决于数据-那么什么是
print(df['r\u id'].nunique())
print(df['g\u id'].nunique())
?我添加了更多细节。希望有帮助@幸运的是,没有,因为我理解轴。但我需要知道更多关于10亿数据帧的信息。因此,您可以在您的问题中添加
print(df['r\u id'].nunique())
print(df['g\u id'].nunique())
print(len(df['r\u id','g\u id'].drop\u duplicates().index))
?非常感谢。