小编Joe*_*ger的帖子

pandas groupby在组内排序

我想将数据框分组为两列,然后对组内的聚合结果进行排序.

In [167]:
df

Out[167]:
count   job source
0   2   sales   A
1   4   sales   B
2   6   sales   C
3   3   sales   D
4   7   sales   E
5   5   market  A
6   3   market  B
7   2   market  C
8   4   market  D
9   1   market  E

In [168]:
df.groupby(['job','source']).agg({'count':sum})

Out[168]:
            count
job     source  
market  A   5
        B   3
        C   2
        D   4
        E   1
sales   A   2
        B   4
        C   6
        D   3
        E   7
Run Code Online (Sandbox Code Playgroud)

我现在想在每个组中按降序对count列进行排序.然后只占前三行.得到类似的东西:

            count
job …
Run Code Online (Sandbox Code Playgroud)

python sorting group-by pandas

131
推荐指数
5
解决办法
21万
查看次数

高效地计算numpy数组中的排序排列

我有一个numpy的数组。什么是计算排序的所有排列的最快方法。

我的意思是,给定数组中的第一个元素,我想要一个依次排列的所有元素的列表。然后给定第二个元素,其后的所有元素的列表。

因此,给出我的列表:b,c和d跟随a。c&d跟随b,而d跟随c。

x = np.array(["a", "b", "c", "d"])
Run Code Online (Sandbox Code Playgroud)

因此,潜在的输出如下所示:

[
    ["a","b"],
    ["a","c"],
    ["a","d"],

    ["b","c"],
    ["b","d"],

    ["c","d"],
]
Run Code Online (Sandbox Code Playgroud)

我将需要做几百万遍,因此我正在寻找一种有效的解决方案。

我尝试了类似的东西:

im = np.vstack([x]*len(x))
a = np.vstack(([im], [im.T])).T
results = a[np.triu_indices(len(x),1)]
Run Code Online (Sandbox Code Playgroud)

但实际上比循环慢...

python arrays performance numpy

5
推荐指数
1
解决办法
509
查看次数

标签 统计

python ×2

arrays ×1

group-by ×1

numpy ×1

pandas ×1

performance ×1

sorting ×1