我有一个要分析的大数据,其中包括许多具有列的行。
我想在只显示Top 10品牌和'Others'的条件下,创建一个新的栏目('Recode_Brand')复制'Brand'栏目
那么我如何才能使条件和逻辑呢?
如果我可以使用下面的条件,那就太好了;
Brand_list = ['Google', 'Apple', 'Amazon', 'Microsoft', 'Tencent', 'Facebook', 'Visa', 'McDonald's', 'Alibaba', 'AT&T']我是熊猫的新手,需要你的支持。提前高度赞赏。
发布于 2020-03-27 17:11:51
只需使用2018列,例如:
df['Recode_Brand'] = df.apply(lambda row: row['Brand'] if row['2018'] <= 10 else 'Other', axis=1)或者,如果你需要这个品牌列表,你可以这样做:
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一样包含'字符,则必须将其括在双引号"中,或者使用\'对该字符进行转义。
发布于 2020-03-27 17:46:24
使用numpy.where在top10中查找Brand并添加新列:
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']})用十大品牌打造新系列
top10 = df.nsmallest(10, '2018')并添加一个新列,如果brand在top10 else 'Others'中,则为Recode_Brand
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 UPShttps://stackoverflow.com/questions/60882796
复制相似问题