【问题标题】:Pandas sort list returned by str.split()str.split() 返回的 Pandas 排序列表
【发布时间】: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 可以获得的不同字符串名称的数量有所限制。不管怎样,我们真的需要更多的上下文。

标签: python string sorting pandas dataframe


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 2018-07-08
      • 2021-09-07
      相关资源
      最近更新 更多