我有一个名为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
以外的所有行
答案 0 :(得分:4)
您可以使用pd.Index.difference
:
cols = data.select_dtypes(include=['O', 'category']).columns.difference(['testid'])
for i in cols:
data[i] = le.fit_transform(data[i])
答案 1 :(得分:0)
您可以输入以下if语句:
for i in data.select_dtypes(include=['object','category']).columns:
if i == 'testid':
continue
data[i]=le.fit_transform(data[i])
答案 2 :(得分:0)
另一个简短的解决方案:
cols = data.dtypes.isin(['O','category']).drop('testid').index
for i in cols:
data[i] = le.fit_transform(data[i])