【发布时间】:2019-12-31 07:33:23
【问题描述】:
我正在尝试使用数据帧的 pivot_table 函数来透视数据
我的原始数据框 df 的形状为 (630352,5),并且生成的旋转数据集应为 (395194,196784) 但是我收到的错误消息是这样的:
File "D:\Anaconda\lib\site-packages\pandas\core\reshape\reshape.py", line 177, in _make_selectors
mask.put(selector, True)
IndexError: index 458495173 is out of bounds for axis 0 with size 458444768
这是我用来透视数据的代码。
df_pivot= df.pivot_table(index=['saleorder'],columns='product', values='quantity',aggfunc=sum)
原来的df就是这种格式
saleorder | product | desc | id | quantity
12345 | bs1234 | abc | 2 | 1
12345 | bs12214 | abc | 2 | 1
12312 | bs12214 | abc | 2 | 1
【问题讨论】:
-
你能分享你的数据框样本吗?
-
@GrzegorzSkibinski 请查看原帖,添加示例格式
-
不知道。也许您会将 df 分成两部分,并使用“pivot_table”分别测试它们。 df= df.sort_values('saleorder'), 查找作为新 'saleorder' 开始的索引,例如: 300000 。 df1=df.iloc[:300000], df2=df.iloc[300000:]
-
@kantal 这就是我目前所做的,但是一旦我旋转了每个块,我将如何将它们重新合并在一起。我不能只使用外部合并,因为它可能的产品 ID 将重复,在这种情况下,我希望它们作为合并数据框中的新行而不是重复列。
-
@Isra 连接它们!如果旋转的数据帧是 df1p 和 df2p:dfrslt= pd.concat([df1p,df2p],sort=False)
标签: python pandas memory pivot pivot-table