Значение фильтра данных - PullRequest
       5

Значение фильтра данных

0 голосов
/ 05 ноября 2018

У меня есть фрейм данных, который я хочу отфильтровать по значению больше 20

ID   value
A    10
B    21
C    22

Я использовал df['ID'] > 20 и получил результат

False
True
True

Однако я хочу, чтобы он возвращал B, C, а не логическое значение

Ответы [ 5 ]

0 голосов
/ 05 ноября 2018

Вы можете фильтровать по значению

df[df['value'] > 20]

enter image description here

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

df[df['value'] > 20].ID

enter image description here

0 голосов
/ 05 ноября 2018

Много способов решить здесь.

Вы можете подойти к этому, используя векторизованную операцию. Прямо сейчас ваш код только оценивает, является ли утверждение истинным или ложным. Заключив этот оператор в квадратные скобки, вы можете отфильтровать его в информационном кадре Pandas, где все операторы имеют значение True.

Так что если ваш набор данных выглядит как

df = pd.DataFrame({'ID': {0: 'A', 1: 'B', 2: 'C'}, 'value': {0: 10, 1: 21, 2: 22}})

Вы можете отфильтровать по нему: df[df['value'] > 20] или, если вы хотите просто получить значения в столбце идентификатора, вы добавляете имя этого столбца df[df['value'] > 20]['ID']

0 голосов
/ 05 ноября 2018

df.loc ваш друг:

df.loc[df['value'] > 20, 'ID']
0 голосов
/ 05 ноября 2018

Или используйте eval панд:

df.loc[df.eval('value > 20'),'ID']

Или (не очень рекомендуется), используйте where панд:

df.where(df['value']>20,df['ID'],axis=1).dropna()['ID']
0 голосов
/ 05 ноября 2018

Выберите только те строки, где значение> 20, а затем верните значения идентификатора

import pandas as pd
df = {"ID": ["A", "B", "C"], "val":[10, 21, 22]}
df = pd.DataFrame(df)

df = df[df["val"] > 20]
df["ID"].values

Возвращает:

array(['B', 'C'], dtype=object)

Редактировать: ответы здесь с использованием df.loc выполняют те же действия, что и выше, только лучше и более кратко. Я оставлю это на всякий случай, если это кому-нибудь объяснительно.

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