Настройка
df
A B C
0 8 4 2
1 8 8 6
2 8 5 2
datatype = df.dtypes
datatype
A object
B category
C int64
dtype: object
Похоже, вы пытаетесь выбрать объект и категориальные столбцы в некотором кадре данных (здесь не показано).Чтобы исправить свой код, используйте:
tmp3 = datatype[(datatype == 'object') | (datatype == 'category')].index.tolist()
tmp3
# ['A', 'B']
Поскольку побитовые операторы имеют более высокий приоритет, вам нужно будет использовать скобки перед ИЛИ масок.После этого индексация работает нормально.
Чтобы получить список, позвоните .index.tolist()
.
Другое решение - select_dtypes
:
df.select_dtypes(include=['object', 'category'])
A B
0 8 4
1 8 8
2 8 5
df.select_dtypes(include=['object', 'category']).columns
# ['A', 'B']
Это позволяет обойтись без промежуточного datatype
серия.