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 排序列表的主要内容,如果未能解决你的问题,请参考以下文章
[Python话说NBA]pandas分组操作groupby方法与sort_values排序方法
将字符串拆分附加到 Pandas DataFrame [关闭]