Буквенно-цифровое и символьное сравнение Python - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть набор данных CSV, и я пытаюсь выбрать все строки, в которых столбец "INCOME" равен "<= 50K" ИЛИ "> 50K"

Это то, что у меня есть, но оно возвращаеттолько имена столбцов без каких-либо строк.

df.loc[df.INCOME == '>50K',:]

Мой код в основном говорит, выберите все строки, где столбец INCOME набора данных "df" равен '> 50K'

Любая помощь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Отличный ответ уже был представлен @Wen, однако альтернативный подход вы можете попробовать с поэлементными операторами, как вы изначально хотели в вашем POST.

Пример DataFrame:

>>> df
   NUM INCOME  CAP
0    1    20k    5
1    2    30k    9
2    8    50k    2
3    3    40k    7
4    6    50k    7
5    4    80k    3
6    8    20k    8
7    9    90k   10
8    6    60k    4
9   10    10k    7

Использовать поэлементное логическое OR(|):

>>> df.loc[ (df['INCOME'] <='10k') | (df['INCOME'] >='50k') ]
       NUM INCOME  CAP
    2    8    50k    2
    4    6    50k    7
    5    4    80k    3
    7    9    90k   10
    8    6    60k    4
    9   10    10k    7

ИЛИ:

>>> df.loc[ (df['INCOME'] <='20k') | (df['INCOME'] =='50k') ]
   NUM INCOME  CAP
0    1    20k    5
2    8    50k    2
4    6    50k    7
6    8    20k    8
9   10    10k    7
0 голосов
/ 03 февраля 2019

Вы можете сделать с

df.INCOME=df.INCOME.str.strip()
df.loc[df.INCOME == '>50K',:]
...