我在 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条经验 获得超7个赞
有可能,通过使用 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

智慧大石
TA贡献1946条经验 获得超3个赞
如果我理解正确,您希望保留所有重复项,然后按顺序排列列表,在该顺序中您创建本质上是唯一值的单独列表,但它们都按顺序连接成一个列表.
我认为这在 listcomp 中是不可能的,而且我没有想到在 Pandas 中轻松/快速地完成它。
但简单的算法是:
为每组唯一值创建一个不同的列表: 对于 x 中的 i:如果 x 不在列表 1 中,则添加到列表 1;否则如果不在list2中,则添加到list2中;否则如果不在列表 3 中,则广告到列表 3;等等。如果列表的数量不可预测,那么肯定有一种方法可以通过递归来做到这一点。
根据它们的值评估列表,以确定您希望它们在最终列表中列出的顺序。从您的帖子中不清楚您希望它们处于什么顺序。按第 0 个位置的值查询可能是一种方法。将整个列表评估为 >= 彼此是另一种方式。
一旦你有了这组列表和它们的顺序,就可以直接在最终列表中按顺序连接它们。
添加回答
举报
0/150
提交
取消