使用Python将大型数据集的等价行分组为二维数组

我有10万行数据,我想按照下面的方法在Python中进行分组。简单的Python迭代需要很多时间。如何使用任何Python机器学习库来优化它?

    [[1,2,3,4],[2,3],[1,2,3],[2,3],[1,2,3],[1,2,3,4],[1],[2]...]    Output    [[0,5],[1,3]],[2,4],[6],[7]]    Explanation:  index 0,5 have same list ;                  index 1,3 have same list ;                  index 2,4 have same list ;                   index 6 no match

我有10万个子列表,我想按照上面的方法在Python中进行分组。


回答:

一个简单的解决方案是将列表转换为元组,然后只需使用groupby并访问.groups属性,如果你想知道每个组的索引

import pandas as pddf = pd.DataFrame({'vals': [[1,2,3,4], [2,3], [1,2,3], [2,3],                            [1,2,3], [1,2,3,4], [1], [2], [2,2], [2,1,3]]})df.groupby(df.vals.apply(tuple)).groups#{(1,): Int64Index([6], dtype='int64'),# (1, 2, 3): Int64Index([2, 4], dtype='int64'),# (1, 2, 3, 4): Int64Index([0, 5], dtype='int64'),# (2,): Int64Index([7], dtype='int64'),# (2, 1, 3): Int64Index([9], dtype='int64'),# (2, 2): Int64Index([8], dtype='int64'),# (2, 3): Int64Index([1, 3], dtype='int64')}

如果你需要分组索引的列表,可以尝试以下方法:

df.reset_index().groupby(df.vals.apply(tuple))['index'].apply(list).sort_values().tolist()#[[0, 5], [1, 3], [2, 4], [6], [7], [8], [9]]

Related Posts

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注