为了账号安全,请及时绑定邮箱和手机立即绑定

Python 排列列表以包含重复项

Python 排列列表以包含重复项

守着一只汪 2021-07-02 14:58:40
我在 Python 中有一个类似于以下内容的列表:x = [1,2,2,3,3,3,4,4]有没有办法使用 Pandas 或其他一些列表理解来使列表看起来像这样,类似于队列系统:x = [1,2,3,4,2,3,4,3]
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

有可能,通过使用 cumcount


s=pd.Series(x)

s.index=s.groupby(s).cumcount()

s.sort_index()

Out[11]: 

0    1

0    2

0    3

0    4

1    2

1    3

1    4

2    3

dtype: int64


查看完整回答
反对 回复 2021-07-13
?
智慧大石

TA贡献1946条经验 获得超3个赞

如果我理解正确,您希望保留所有重复项,然后按顺序排列列表,在该顺序中您创建本质上是唯一值的单独列表,但它们都按顺序连接成一个列表.

我认为这在 listcomp 中是不可能的,而且我没有想到在 Pandas 中轻松/快速地完成它。

但简单的算法是:

  • 为每组唯一值创建一个不同的列表: 对于 x 中的 i:如果 x 不在列表 1 中,则添加到列表 1;否则如果不在list2中,则添加到list2中;否则如果不在列表 3 中,则广告到列表 3;等等。如果列表的数量不可预测,那么肯定有一种方法可以通过递归来做到这一点。

  • 根据它们的值评估列表,以确定您希望它们在最终列表中列出的顺序。从您的帖子中不清楚您希望它们处于什么顺序。按第 0 个位置的值查询可能是一种方法。将整个列表评估为 >= 彼此是另一种方式。

  • 一旦你有了这组列表和它们的顺序,就可以直接在最终列表中按顺序连接它们。


查看完整回答
反对 回复 2021-07-13
  • 3 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信