首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用Dask pivot_table之后,我丢失了索引列

在使用Dask pivot_table之后,我丢失了索引列
EN

Stack Overflow用户
提问于 2017-03-06 21:44:20
回答 1查看 4K关注 0票数 4

在我使用pivot_table作为Dataframe并将数据保存到Parquet文件后,我正在松散索引列。

代码语言:javascript
运行
复制
import dask.dataframe as dd
import pandas as pd

df=pd.DataFrame()
df["Index"]=[1,2,3,1,2,3]
df["Field"]=["A","A","A","B","B","B"]
df["Value"]=[10,20,30,100,120,130]
df

我的数据:

代码语言:javascript
运行
复制
   Index Field  Value
0      1     A     10
1      2     A     20
2      3     A     30
3      1     B    100
4      2     B    120
5      3     B    130

Dask代码:

代码语言:javascript
运行
复制
ddf=dd.from_pandas(df,2)
ddf=ddf.categorize("Field")
ddf=ddf.pivot_table(values="Value", index="Index", columns="Field")
dd.to_parquet("1.parq",ddf)
dd.read_parquet("1.parq").compute()

这就产生了一个错误:

ValueError:存在多个可能的索引:'A','B‘。请选择一个索引=‘索引名称’

我可以选择A或B作为索引,但是我缺少index列。

我尝试了dd.to_parquet("1.parq",ddf, write_index=True),但是它给了我以下错误:

TypeError:无法将项插入到尚未存在类别的CategoricalIndex中

有人能帮我把“索引”列的表保存到Parquet文件中吗?

PS:

ddf.pivot_table(values="Value", index="Index", columns="Field").compute()给出了预期的结果:

代码语言:javascript
运行
复制
Field     A      B
Index             
1      10.0  100.0
2      20.0  120.0
3      30.0  130.0

而且使用Pandas不是一个解决方案,因为我的数据是20 GB。

编辑:

我试过了

代码语言:javascript
运行
复制
ddf.columns = list(ddf.columns)
dd.to_parquet("1.parq",ddf, write_index=True)

这给了我一个新的错误:

dask.async.TypeError:预期的字节列表

Google显示,这些错误都是来自于“旋风”异步库。

EN

Stack Overflow用户

回答已采纳

发布于 2017-03-07 16:46:10

这里有两个问题:

  1. pivot_table生成的列索引是绝对的,因为您使原始列“字段”是绝对的。将索引写入数据帧上调用reset_index,熊猫无法为列索引添加新的值,因为它是绝对的。您可以使用ddf.columns = list(ddf.columns)来避免这种情况。
  2. 索引列具有对象dtype,但实际上包含整数。整数不是对象列中所期望的类型之一,因此应该对其进行转换。

整个街区现在看起来如下:

代码语言:javascript
运行
复制
ddf = dd.from_pandas(df,2)
ddf = ddf.categorize("Field")
ddf = ddf.pivot_table(values="Value", index="Index", columns="Field")
ddf.columns = list(ddf.columns)
ddf = ddf.reset_index()
ddf['index'] = ddf.index.astype('int64')
dd.to_parquet("1.parq", ddf)
票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42636152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档