如何在数据透视表之后对Dask中的索引进行排序

本十

在维护排序索引的同时尝试在dask中使用ivot_table。我有一个简单的pandas数据框,看起来像这样:

# make dataframe, fist in pandas and then in dask
df = pd.DataFrame({'A':['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'], 'B': ['a', 'b', 'c', 'a', 'b', 'c', 'a','b', 'c'], 'dist': [0, .1, .2, .1, 0, .3, .4, .1,  0]})

df.sort_values(by='A', inplace=True)
dd = dask.dataframe.from_pandas(df, chunksize=3)  # just for demo's sake, you obviously don't ever want a chunksize of 3
print(dd.known_divisions)  # Here I get True, which means my data is sorted

# now pivot and see if the index remains sorted
dd = dd.categorize('B')
pivot_dd = dd.pivot_table(index='A', columns='B', values='dist')
print(pivot_dd.known_divisions) # Here I get False, which makes me sad

我很想找到一种方法使pivot_dd具有排序的索引,但是我没有sort_index在dask中看到一个方法,并且无法将'A'设置为没有关键错误的索引(它已经是索引!) 。

在这个玩具示例中,我可以先旋转熊猫表,然后再排序。我想到的真正的应用程序不允许我这样做。

在此先感谢您的帮助/建议。

勤工俭学

这可能不是您想要的,甚至可能不是最佳答案,但它确实起作用了。第一个难题是pivot操作为列创建了分类索引,这很烦人。您可以执行以下操作。

>>> pivot_dd = dd.pivot_table(index='A', columns='B', values='dist')
>>> pivot_dd.columns = list(pivot_dd.columns)
>>> pivot_dd = pivot_dd.reset_index().set_index('A', sorted=True)
>>> pivot_dd.known_divisions
True

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在数据集表中对列索引进行标签编码?

如何在数据透视表中按字母数字顺序对列数据进行排序?

在数据透视表之后对MultiIndex列进行排序

按特定的用户定义顺序对数据透视表数据帧的索引进行排序

如何在两个分类列上形成数据透视表并对每个索引进行计数?

如何在Pandas中对数据透视表进行排序

MongoDB中如何对索引进行排序?

在数据透视表中按升序对月份进行排序

在数据透视表中按升序对月份进行排序

如何在数据透视数据框中对工作日进行排序?

熊猫:如何使用多索引进行数据透视?

如何避免按索引对数据透视表进行排序

如何在数据透视表中按混合值分组并按日期排序?

如何在数据透视表上对值进行分组?

如何对xarray数据集/数据数组的索引进行排序?

如何在DataGridView中重新排序列时对列索引进行排序?

如何在数据透视表中按天和月对以小时为单位的列进行分组?

如何在数据透视表中获取连接值?

如何在数据透视表中查找列的位置

如何使用数组中的字段对ElasticSearch索引进行排序?

如何使用R对列表中的索引进行排序?

如何在数据表中添加新行并重新排序每行的索引?

如何在熊猫数据透视表中删除多级索引

如何在python中反转多索引数据透视表

如何对PHP数组索引进行排序?

对多索引数据透视表熊猫进行排序

如何在Laravel数据透视表中与表列进行比较

如何在数据框的列中对元组进行排序

如何在数据日志查询中对结果进行排序