首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取所有分类列并排除一个特定列

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

Stack Overflow用户
提问于 2019-02-05 17:32:06
回答 3查看 444关注 0票数 0

我有一个名为data的数据框。我希望选择除名为test的列之外的所有对象和分类数据类型。

我有以下代码,但它选择了所有列

代码语言:javascript
运行
复制
| 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之外的所有行

EN

回答 3

Stack Overflow用户

发布于 2019-02-05 17:44:09

您可以使用pd.Index.difference

代码语言:javascript
运行
复制
cols = data.select_dtypes(include=['O', 'category']).columns.difference(['testid'])

for i in cols:
    data[i] = le.fit_transform(data[i])
票数 4
EN

Stack Overflow用户

发布于 2019-02-05 17:35:10

您可以将if语句放在下面这样:

代码语言:javascript
运行
复制
for i in data.select_dtypes(include=['object','category']).columns:
    if i == 'testid':
        continue
    data[i]=le.fit_transform(data[i])
票数 0
EN

Stack Overflow用户

发布于 2019-02-05 22:11:07

另一个简短的解决方案:

代码语言:javascript
运行
复制
cols = data.dtypes.isin(['O','category']).drop('testid').index

for i in cols:
    data[i] = le.fit_transform(data[i])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54531253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档