在数据框python的每一行中按字母顺序对单词进行排序

Posted

技术标签:

【中文标题】在数据框python的每一行中按字母顺序对单词进行排序【英文标题】:Sort words alphabetically in each row of a dataframe python 【发布时间】:2018-12-29 04:48:23 【问题描述】:

我在数据框中有一列包含字符串值,如下所示:

sortdf=pd.DataFrame(data= 'col1':["hello are you","what happenend","hello you there","issue is in our program","whatt is your name"])

我想按字母顺序对元素中的每个单词进行排序。

期望的输出:

    col1
0    are hello you
1   happenend what 
2   hello there you 
3    is in issue  our program
4   is name whatt your

我尝试使用以下代码进行此操作:

sortdf['col1']. sort()

但是这段代码不起作用。

【问题讨论】:

【参考方案1】:

pd.Series.apply 与匿名lambda 函数一起使用:

sortdf['col1'] = sortdf['col1'].apply(lambda x: ' '.join(sorted(x.split())))

pd.Series.sort 不合适,因为 (a) 这对系列元素而不是系列元素中的单词进行排序,并且 (b) 该方法已被弃用,取而代之的是 sort_values

这个想法是将一个字符串拆分成一个单词列表,按字母顺序排序,然后重新连接成一个字符串。

结果:

                      col1
0            are hello you
1           happenend what
2          hello there you
3  in is issue our program
4       is name whatt your

或者,列表推导可能更有效:

sortdf['col1'] = [' '.join(sorted(x)) for x in sortdf['col1'].str.split()]

【讨论】:

也许比 apply 更快? list(map(lambda x : ' '.join(sorted(x)),sortdf.col1.str.split().tolist())) @Wen,是的,可能。我添加的列表理解应该比map + lambda 更快。

以上是关于在数据框python的每一行中按字母顺序对单词进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在数据库表中按字母顺序对列进行排序? [关闭]

如何在pyspark中按字母顺序对嵌套结构的列进行排序?

C ++:从文本文件中读取单行,按字母顺序对单词进行排序

尝试在c ++中按字母顺序排列单词时出现段错误

通过按字母顺序仅对一行中的一些字段进行排序来重塑 R 中的数据框

如何在 swift 中按字母顺序对 JSON 字符串进行排序?