Максимумы: определить столбцы матрицы как вектор

In [1]: df
Out[1]:
    Sp  Mt Value  count
0  MM1  S1     a      3
1  MM1  S1     n      2
2  MM1  S3    cb      5
3  MM2  S3    mk      8
4  MM2  S4    bg     10
5  MM2  S4   dgd      1
6  MM4  S2    rd      2
7  MM4  S2    cb      2
8  MM4  S2   uyi      7

In [2]: df.groupby(['Mt'], sort=False)['count'].max()
Out[2]:
Mt
S1     3
S3     8
S4    10
S2     7
Name: count

Чтобы получить индексы исходного DF, вы можете сделать:

In [3]: idx = df.groupby(['Mt'])['count'].transform(max) == df['count']

In [4]: df[idx]
Out[4]:
    Sp  Mt Value  count
0  MM1  S1     a      3
3  MM2  S3    mk      8
4  MM2  S4    bg     10
8  MM4  S2   uyi      7

Обратите внимание, что если у вас есть несколько максимальных значений для каждой группы, все будут возвращены.

Обновить

По градиентной вероятности, что это то, что запросит OP:

In [5]: df['count_max'] = df.groupby(['Mt'])['count'].transform(max)

In [6]: df
Out[6]:
    Sp  Mt Value  count  count_max
0  MM1  S1     a      3          3
1  MM1  S1     n      2          3
2  MM1  S3    cb      5          8
3  MM2  S3    mk      8          8
4  MM2  S4    bg     10         10
5  MM2  S4   dgd      1         10
6  MM4  S2    rd      2          7
7  MM4  S2    cb      2          7
8  MM4  S2   uyi      7          7
0
задан Hirshy 22 March 2019 в 15:25
поделиться

1 ответ

Я не могу проверить этот код прямо сейчас, но я считаю, что это или что-то похожее должно сработать.

Вот способ генерировать случайную матрицу и затем извлекать столбцы матрицы. Я не знаю, хотите ли вы представить столбцы как векторы столбцов или как строки строк. У Maxima нет способа представления векторов строк и столбцов как отдельных типов. Вместо вектора столбца я получу матрицу из 1 столбца, а для вектора строки получу список.

[m, n]: [2 + random(5), 2 + random(5)];
h: lambda ([i, j], random(11) - 5) $
M: genmatrix (h, m, n);

Вот список, содержащий столбцы M в виде матриц с 1 столбцом:

makelist (col (M, k), k, 1, n);

Вот список, содержащий столбцы M в виде списков:

args (transpose (M));
0
ответ дан Robert Dodier 22 March 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: