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

问题描述 投票:0回答:1

这里是一个示例系列

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中,这很容易,我的函数“ rearrange”只需要通过“-”进行str.split()并重新组装

但是我很难通过一系列的操作来做到这一点

当我这样做时:

chunks = messages.str.split("-")

块成为包含字符串列表的系列并尝试为大块建立索引,而不是对系列进行索引。

有更好的方法吗?

python dask dask-distributed
1个回答
1
投票

[从定义重排功能开始,将其应用于每个元素:

def myRearrange(tbl):
    return '-'.join([ tbl[i]  for i in [ 1, 4, 2, 0, 3 ] ])

然后:

  • 使用常规str.split分割源Series。结果是也是Series,每个元素都包含list-拆分结果(原始字符串的块)。
  • 将上述功能应用于它,将每个块列表转换为一串重新排列的块。
  • 调用compute()以显示结果。

要做的代码是:

messages.str.split('-').apply(myRearrange, meta=('txt', 'object')).compute()

您可能错过的详细信息是meta参数,指定名称和结果的类型。您还可以传递meta='object'以获得Seriesno name

结果是:

0         b-e-c-a-d
1         2-5-3-1-4
2     w-z-x123-v-y0
3         9-6-8-0-7
© www.soinside.com 2019 - 2024. All rights reserved.