Pandas 如何在数据块上使用pivot
我正在尝试透视一个有10亿行和3列的数据。为了做到这一点,我尝试着分块读取文件,并在每个块上应用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
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))
?非常感谢。