首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据条件对列进行重新编码

问如何根据条件对列进行重新编码
EN

Stack Overflow用户
提问于 2020-03-27 16:59:52
回答 2查看 82关注 0票数 0

我有一个要分析的大数据,其中包括许多具有列的行。

我想在只显示Top 10品牌和'Others'的条件下,创建一个新的栏目('Recode_Brand')复制'Brand'栏目

那么我如何才能使条件和逻辑呢?

如果我可以使用下面的条件,那就太好了;

代码语言:javascript
复制
Brand_list = ['Google', 'Apple', 'Amazon', 'Microsoft', 'Tencent', 'Facebook', 'Visa', 'McDonald's', 'Alibaba', 'AT&T']

我是熊猫的新手,需要你的支持。提前高度赞赏。

enter image description here

EN

回答 2

Stack Overflow用户

发布于 2020-03-27 17:11:51

只需使用2018列,例如:

代码语言:javascript
复制
df['Recode_Brand'] = df.apply(lambda row: row['Brand'] if row['2018'] <= 10 else 'Other', axis=1)

或者,如果你需要这个品牌列表,你可以这样做:

代码语言:javascript
复制
Brand_list = ["Google", "Apple", "Amazon", "Microsoft", "Tencent", "Facebook", "Visa", "McDonald's", "Alibaba", "AT&T"]
df['Recode_Brand'] = df.apply(lambda row: row['Brand'] if row['Brand'] in Brand_list else 'Other', axis=1)

NB如果您的字符串像McDonald's一样包含'字符,则必须将其括在双引号"中,或者使用\'对该字符进行转义。

票数 2
EN

Stack Overflow用户

发布于 2020-03-27 17:46:24

使用numpy.where在top10中查找Brand并添加新列:

代码语言:javascript
复制
df = pd.DataFrame({'2018':[7,8,3,12,15,16,10,9,4,5,11,1,14,2,13,6],
                   'Brand':['Google','Apple','Amazon','Microsoft','Tencent','Facebook','Visa','McDonalds','Alibaba','AT&T',
                            'IBM','Verizon','Marlboro','Coca-Cola','MasterCard','UPS']})

用十大品牌打造新系列

代码语言:javascript
复制
top10 = df.nsmallest(10, '2018')

并添加一个新列,如果brand在top10 else 'Others'中,则为Recode_Brand

代码语言:javascript
复制
df['Recode_Brand'] = np.where((df['Brand'].eq(top10['Brand'])),df['Brand'],'Others')

print(df)
    2018       Brand Recode_Brand
0      7      Google       Google
1      8       Apple        Apple
2      3      Amazon       Amazon
3     12   Microsoft       Others
4     15     Tencent       Others
5     16    Facebook       Others
6     10        Visa         Visa
7      9   McDonalds    McDonalds
8      4     Alibaba      Alibaba
9      5        AT&T         AT&T
10    11         IBM       Others
11     1     Verizon      Verizon
12    14    Marlboro       Others
13     2   Coca-Cola    Coca-Cola
14    13  MasterCard       Others
15     6         UPS          UPS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60882796

复制
相关文章

相似问题

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