Сортировать столбец логических значений в Pandas DataFrame - PullRequest
0 голосов
/ 12 октября 2018

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

. Я назначил логические выражения для столбца с именем 50+, например:

I assigned the boolean statements to the list 50+

Как мне отсортировать True строки из столбца 50+?

Я искал в интернете и не нашел решения.Поскольку я передал 50+ из логического значения в датафрейм, разве это не делает его нормальной строкой, которую можно отсортировать с помощью функции сортировки значений?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Я хочу найти даты, связанные с логическим значением True.

Вам не нужно ничего сортировать для этого.Вам нужно только использовать логическое индексирование;другими словами, создайте логический ряд или массив той же длины, что и индекс вашего фрейма данных, и примените его через __getitem__, вызываемый синтаксисом [].

Таким образом, вместо "назначения логического значения pd.DataFrame ", просто индекс индекс !

index_filtered = df.index[df['50+']]
0 голосов
/ 12 октября 2018

Вам необходимо указать имя столбца:

>>> import pandas as pd
>>> import numpy as np
>>> np.random.seed(123)

>>> idx = pd.date_range('2018-10-05', periods=7, freq='D')

>>> df = pd.DataFrame({'data': np.random.randn(idx.size),
...                    '50+': np.random.choice([0, 1], size=idx.size).astype(bool)},
...                   index=idx)

>>> df
                data    50+
2018-10-05 -1.085631   True
2018-10-06  0.997345   True
2018-10-07  0.282978  False
2018-10-08 -1.506295  False
2018-10-09 -0.578600  False
2018-10-10  1.651437   True
2018-10-11 -2.426679  False

>>> df.sort_values('50+')
                data    50+
2018-10-07  0.282978  False
2018-10-08 -1.506295  False
2018-10-09 -0.578600  False
2018-10-11 -2.426679  False
2018-10-05 -1.085631   True
2018-10-06  0.997345   True
2018-10-10  1.651437   True

>>> df.sort_values('50+', ascending=False)
                data    50+
2018-10-05 -1.085631   True
2018-10-06  0.997345   True
2018-10-10  1.651437   True
2018-10-07  0.282978  False
2018-10-08 -1.506295  False
2018-10-09 -0.578600  False
2018-10-11 -2.426679  False

Если вы не уверены, вы всегда можете проверить строку документации .

По умолчанию ascending=True, который поставит False с на первое место, потому что они просто 0 под капотом.(Хотя True равно 1.)

Если вы хотите отфильтровать строки, в которых этот столбец имеет значение True, вы можете использовать:

>>> df[df['50+']]
                data   50+
2018-10-05 -1.085631  True
2018-10-06  0.997345  True
2018-10-10  1.651437  True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...