Python 如何重新排列Dask序列列中每个字符串的块?

Python 如何重新排列Dask序列列中每个字符串的块?,python,dask,dask-distributed,Python,Dask,Dask Distributed,下面是一个示例系列 msg a-b-c-d-e 1-2-3-4-5 v-w-x123-y0-z 0-9-8-7-6 我需要从这个 [0]-[1]-[2]-[3]-[4] 对此[2]-[5]-[3]-[1]-[4] 例如a-b-c-d-e-->b-e-c-a-d 在普通的python中,这很容易,我的函数“重排”只需要将str.split()按“-”并重新组合即可 但我在用dask系列做这件事时遇到了麻烦 当我这样做时: chunks = messages.str.split("-") 块变成

下面是一个示例系列

msg
a-b-c-d-e
1-2-3-4-5
v-w-x123-y0-z
0-9-8-7-6
我需要从这个
[0]-[1]-[2]-[3]-[4]

对此
[2]-[5]-[3]-[1]-[4]

例如a-b-c-d-e-->b-e-c-a-d

在普通的python中,这很容易,我的函数“重排”只需要将str.split()按“-”并重新组合即可

但我在用dask系列做这件事时遇到了麻烦

当我这样做时:

chunks = messages.str.split("-")
块变成了一个包含字符串列表的系列 并尝试索引块,而不是索引序列


有更好的方法吗?

从定义一个重新排列函数开始,应用到每个 要素:

然后:

  • 使用普通str.Split拆分源系列。结果是 也是一个系列,每个元素包含一个列表-拆分 结果(原始字符串的块)
  • 应用上面的函数,将每个区块列表转换为 一串重新排列的块
  • 调用compute()以显示结果
执行此操作的代码是:

messages.str.split('-').apply(myRearrange, meta=('txt', 'object')).compute()
您可能遗漏的细节是元参数,指定了名称 以及结果的类型。您还可以传递
meta='object'
,以获取序列 没有名字的

结果是:

0         b-e-c-a-d
1         2-5-3-1-4
2     w-z-x123-v-y0
3         9-6-8-0-7
0         b-e-c-a-d
1         2-5-3-1-4
2     w-z-x123-v-y0
3         9-6-8-0-7