首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列中包含多个级别Python

在列中包含多个级别Python
EN

Stack Overflow用户
提问于 2021-07-08 21:08:26
回答 1查看 26关注 0票数 1

我在一个数据框中有几列-每一列都有几个因子/级别(10+)。在每一列中,3-4个因子占值的85-90%。我在数据中有几列。遍历每一列,并制作前3-4个变量的虚拟变量将花费大量时间。简单地说,get_dummies将以指数级增加数据的大小。有没有什么有用的方法可以建议我可以自动将前3-4个因素作为虚拟变量,将其余的推入“其他”类别,对于每一列?我使用的是python

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-08 22:49:03

您可以找到nlargest by列,并在创建虚拟对象时将不在前3位的值替换为其他值。

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame({'type':['a','a','a','b','b','b','c','d','e'],
                  'size': ['s','s','s','m','m','s','l','l','xl']})

for col in ['type','size']:
    df = pd.concat([df,
                    pd.get_dummies(df[col].replace(df.loc[~df[col].isin(df[col].value_counts().nlargest(3).index)][col].unique(),
                                                   'other'), 
                                   prefix=col)],
                   axis=1)

输出

代码语言:javascript
运行
复制
  type size  type_a  type_b  type_c  type_other  size_l  size_m  size_other  \
0    a    s       1       0       0           0       0       0           0   
1    a    s       1       0       0           0       0       0           0   
2    a    s       1       0       0           0       0       0           0   
3    b    m       0       1       0           0       0       1           0   
4    b    m       0       1       0           0       0       1           0   
5    b    s       0       1       0           0       0       0           0   
6    c    l       0       0       1           0       1       0           0   
7    d    l       0       0       0           1       1       0           0   
8    e   xl       0       0       0           1       0       0           1   

   size_s  
0       1  
1       1  
2       1  
3       0  
4       0  
5       1  
6       0  
7       0  
8       0  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68302280

复制
相关文章

相似问题

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