python - 对列表中相同元素的索引进行分组的有效方法

标签 python pandas group-by

假设我有一个如下所示的列表:

[1, 2, 2, 5, 8, 3, 3, 9, 0, 1]

现在我想对相同元素的索引进行分组,所以结果应该如下所示:

[[0, 9], [1, 2], [3], [4], [5, 6], [7], [8]]

如何高效地执行此操作?我尽量避免使用循环,因此使用 numpy/pandas 函数的任何实现都很棒。

最佳答案

使用 pandas GroupBy.apply,这非常简单——使用您的数据对一系列索引进行分组。这里的一个好处是您可以保持索引的顺序。

data = [1, 2, 2, 5, 8, 3, 3, 9, 0, 1]
pd.Series(range(len(data))).groupby(data, sort=False).apply(list).tolist()
# [[0, 9], [1, 2], [3], [4], [5, 6], [7], [8]]

关于python - 对列表中相同元素的索引进行分组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56641420/

相关文章:

postgresql - 如何将数字添加到postgresql group by子句中的分组行

python - (gspread) : . get_all_records 返回无序字典

python - 在 QT for Python 中使用 QFrames?

python - 使用没有元数据的 start_url 将额外值传递给 Scrapy 蜘蛛

python - pandas 数据帧计数相对于另一列是唯一的

Mysql 在 date_time 字段中按天分组

python - celery 的过期选项不起作用

python - Pandas 问题 : read_sql with multiple statements in one query returned with no rows

python - 带 Groupby 的数据透视表 - Pandas

python - 如何连接 blob?