Получить все категориальные столбцы и исключить один конкретный столбец - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть фрейм данных с именем data.Я хочу выбрать все объектные и категориальные типы данных, кроме одного столбца с именем test.

У меня есть код ниже, но он выбирает все столбцы

| testid | color | age | mark |
+--------+-------+-----+------+
| a      | red   |  20 | pass |
| d      | green |  30 | fail |
| c      | blue  |  40 | pass |

data = pd.DataFrame([['a', 'red', 20, 'pass'], ['d', 'green', 30, 'fail'], ['c', 'blue', 40, 'pass']], columns=['testid', 'color', 'age', 'mark'])

for i in data.select_dtypes(include=['object','category']).columns:
    data[i]=le.fit_transform(data[i])

Я хочу преобразовать все строки, кромеtestid

Ответы [ 3 ]

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

Вы можете использовать pd.Index.difference:

cols = data.select_dtypes(include=['O', 'category']).columns.difference(['testid'])

for i in cols:
    data[i] = le.fit_transform(data[i])
0 голосов
/ 05 февраля 2019

Еще одно короткое решение:

cols = data.dtypes.isin(['O','category']).drop('testid').index

for i in cols:
    data[i] = le.fit_transform(data[i])
0 голосов
/ 05 февраля 2019

Вы можете поместить оператор if следующим образом:

for i in data.select_dtypes(include=['object','category']).columns:
    if i == 'testid':
        continue
    data[i]=le.fit_transform(data[i])
...