Python 获取所有分类列并排除一个特定列

Python 获取所有分类列并排除一个特定列,python,pandas,dataframe,python-3.5,Python,Pandas,Dataframe,Python 3.5,我有一个名为data的数据帧。我想选择所有对象和分类数据类型,不包括一个名为test的列 我有下面的代码,但它正在选择所有列 | testid | color | age | mark | +--------+-------+-----+------+ | a | red | 20 | pass | | d | green | 30 | fail | | c | blue | 40 | pass | data = pd.DataFrame([['a',

我有一个名为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之外的所有行

您可以这样放置一个if语句:

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

你可以这样写一个if语句:

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

您可以使用:


另一个简短的解决方案:

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

for i in cols:
    data[i] = le.fit_transform(data[i])

另一个简短的解决方案:

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

for i in cols:
    data[i] = le.fit_transform(data[i])

如果下面的一个答案帮助,考虑它(左边的绿色蜱),其他用户知道。如果下面的答案之一帮助,考虑它(绿色蜱在左边),所以其他用户知道。