Python 反转dask分布式数据帧的简单方法

Python 反转dask分布式数据帧的简单方法,python,dask,Python,Dask,我尝试使用[::-1]反转dask数据帧的顺序,但得到了一个未实现的错误,您只能使用iloc索引,如[:,['foo']] e、 g tmp=pd.DataFrame(dict(a=[0,1,1,1,0,1,0,1],b=[0,0,0,0,1,0,0,1])) tmp=dd.from_熊猫(tmp,npartitions=4) tmp[:-1] 如何在不将整个数据帧加载到内存的情况下轻松反转已排序数据帧的顺序?我终于找到了一个不错的方法,使用整数索引并乘以-1 tmp=pd.DataFrame

我尝试使用
[::-1]
反转dask数据帧的顺序,但得到了一个
未实现的错误,您只能使用
iloc
索引,如
[:,['foo']]

e、 g

tmp=pd.DataFrame(dict(a=[0,1,1,1,0,1,0,1],b=[0,0,0,0,1,0,0,1]))
tmp=dd.from_熊猫(tmp,npartitions=4)
tmp[:-1]

如何在不将整个数据帧加载到内存的情况下轻松反转已排序数据帧的顺序?

我终于找到了一个不错的方法,使用整数索引并乘以-1

tmp=pd.DataFrame(dict(a=[0,1,1,1,0,1,0,1],b=[0,0,0,0,1,0,0,1]))
tmp=dd.from_熊猫(tmp,npartitions=4)
tmp=tmp.reset_index()
tmp['index']=tmp['index']*-1
tmp=tmp.set_index('index'))
tmp.compute()

以下是一种保持索引不变的解决方案:

@dask.delayed
def reverse_pdf(pdf):
    '''delayed function to reverse a pandas dataframe'''
    return pdf[::-1]

# generating testdata
tmp=pd.DataFrame(dict(a=[0,1,1,1,0,1,0,1], b=[0,0,0,0,1,0,0,1]))
tmp_dd=dd.from_pandas(tmp, npartitions=4)

# reversing tmp_dd
ds = tmp_dd.to_delayed() # one delayed object per partition
ds = [reverse_pdf(d) for d in ds] # reverse each partition
ds = reversed(ds) # reverse the order of the partitions
tmp_dd_reversed = dd.from_delayed(ds) # construct a new dask dataframe

你能发布你的代码吗?@giorgosmyriantous donei如果你对负索引没问题,这是一个不错的解决办法。你可以添加索引绝对值的最大值来获得正索引。我必须更改返回函数才能使其工作
return pdf.str[:-1]