найти максимальное значение индекса данных pandas - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть pandas мультииндексированный pandas фрейм данных. Я хотел бы найти максимальное значение одного из (числовых, целых) индексов.

То есть индекс работает от 1 до 5844. Я хочу найти скалярное значение 5844.

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

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

Вы можете преобразовать мультииндекс в кадр, а затем получить максимум столбца данных:

scalar = df.index.to_frame[i].max()

Но, возможно, самый простой способ - получить максимум уровня оценки:

scalar = df.index.levels[i].max()
0 голосов
/ 18 апреля 2020

Возможное решение - использовать метод .max() для индекса. В этом случае он вернет значения на каждом уровне MultiIndex, которые могут ИЛИ не соответствовать желаемому. Также следует отметить, что .max() будет возвращать значения лексикографически, а это означает, что для каждого уровня иерархии он найдет наивысшее лексикографическое значение на уровне, а затем будет искать следующие наивысшие значения на следующем уровне для этой первой группы.

>>> tuples = [('bar', 1),
              ('bar', 10),
              ('baz', 11),
              ('baz', 14),
              ('foo', 15),
              ('foo', 16),
              ('qux', 17),
              ('qux', 5844)]
>>> index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
>>> index.max()

('qux', 5844)

В этом случае qux был лексикографически самым высоким, и в пределах следующего уровня MultiIndex (17 и 5844), 5844 было самым высоким значением в группе qux.

Если вам нужно настроить подход, вы можете выбрать для определенного уровня c MultiIndex следующим образом. В этом случае, поскольку целые числа находятся на уровне, обозначенном индексом 1, мы можем использовать этот подход:

>>> index.levels[1].max()
5844

Если ваши целые числа находятся на другом уровне, вы просто меняете индекс на уровнях кронштейн.

0 голосов
/ 18 апреля 2020

Если вы знаете, что индексы go от 1 до 5844 без пропущенных, df.shape[0] работает.

...