str.split() 返回的 Pandas 排序列表

Posted

技术标签:

【中文标题】str.split() 返回的 Pandas 排序列表【英文标题】:Pandas sort list returned by str.split() 【发布时间】:2016-08-27 12:50:24 【问题描述】:

给定一个 str 类型的 Pandas Series,我想对 str.split 返回的结果进行排序。

例如,给定系列

s = pd.Series(['abc,def,ghi','ghi,abc'])

我想得到

s2 = pd.Series(['abc,def,ghi','abc,ghi'])

结果。

我该怎么做?我想到了s.str.split(',').sort()之类的东西。但是,我在 Pandas 中找不到这样的排序功能。还有其他想法吗?

另一个想法是使用函数get_dummies,然后重新排列列,最后执行join_dummies 之类的操作。但是,我找不到这样的功能join_dummies

【问题讨论】:

将每一行的字符串拆分,排序并重新加入它是非常低效的。你最终想要得到什么输出?请显示在此之后消耗 s2 的步骤。为什么不同列名的排序顺序很重要?拆分字符串并使用get_dummies() 听起来不错,假设您对在步骤 s2 可以获得的不同字符串名称的数量有所限制。不管怎样,我们真的需要更多的上下文。 【参考方案1】:

您可以使用在 Pandas 中非常有用的apply 函数。

s.apply(lambda x: ','.join(sorted(x.split(','))))

0    abc,def,ghi
1        abc,ghi

【讨论】:

【参考方案2】:

试试这个:

In [70]: s.str.split(',').map(lambda x: ','.join(sorted(x)))
Out[70]:
0    abc,def,ghi
1        abc,ghi
dtype: object

【讨论】:

以上是关于str.split() 返回的 Pandas 排序列表的主要内容,如果未能解决你的问题,请参考以下文章

pandas字符串分割str.split()函数

[Python话说NBA]pandas分组操作groupby方法与sort_values排序方法

在 Pandas 中拆分字符串忽略大小写

将字符串拆分附加到 Pandas DataFrame [关闭]

php 字符串分割函数 str_split,chunk_split

23、pandas的多列拼接成一列函数.str.cat()