python - 如何创建一个新列,将前 5 行和剩余的行合并为杂项?
问题描述
python的新手。我有一个数据集,其中“汽车”列有 87 个不同的值。我想更改列以在列中显示排名前 10 位的汽车品牌,其余 77 个将被归为杂项。下面的示例演示:
In[]: car_sales['car'].unique()
Out[]: array(['Ford', 'Mercedes-Benz', 'Nissan', 'Honda', 'Renault', 'BMW',
'Land Rover', 'Volkswagen', 'Audi', 'Chrysler', 'Jaguar',
'Mitsubishi', 'Kia', 'Porsche', 'Toyota', 'Hyundai'], dtype=object)
除了前 5 名之外,我首先尝试将所有其他内容作为字典
my dict = {'Miscellaneous' : 'Nissan', 'Honda', 'Renault', 'BMW',
'Land Rover', 'Volkswagen', 'Audi', 'Chrysler', 'Jaguar'}
我现在去看看我的柱车如下:
车
福特
奔驰
日产
奥迪
捷豹
各种各样的
寻求帮助。谢谢
解决方案
您可以使用pandas.Categorical
来处理这些类型的问题。categorical
type 还具有内存效率更高的额外好处。
例子:
cars = ['Ford', 'Mercedes-Benz', 'Nissan', 'Honda', 'Renault', 'BMW',
'Land Rover', 'Volkswagen', 'Audi', 'Chrysler', 'Jaguar',
'Mitsubishi', 'Kia', 'Porsche', 'Toyota', 'Hyundai']
df = pd.DataFrame({'cars': np.random.choice(cars, 100)})
top_5 = ['Ford', 'Mercedes-Benz', 'Nissan', 'Audi', 'Jaguar', 'Miscellaneous']
df['cars_refined'] = pd.Categorical(df['cars'], categories=top_5).fillna('Miscellaneous')
print(df.head(10))
cars cars_refined
0 Mercedes-Benz Mercedes-Benz
1 Mercedes-Benz Mercedes-Benz
2 Volkswagen Miscellaneous
3 Ford Ford
4 Mitsubishi Miscellaneous
5 Toyota Miscellaneous
6 Porsche Miscellaneous
7 Honda Miscellaneous
8 Kia Miscellaneous
9 Jaguar Jaguar
推荐阅读
- c# - 由于使用 C# SQLClient MSSQL 的 Table Exists 方法导致始终为 FALSE
- r - R中的'if'语句
- java - AWS SES 很长的交付时间
- sql - 如何设置 intervalstyle = iso_8601 然后在 golang 中运行选择查询
- c++ - 将对象的亲和性从 QThread 更改为 Main GUI 线程
- html - 禁用具有比较条件的按钮
- javascript - materializecss轮播滑块模式
- node.js - TOMCAT Angular 应用程序无法连接到 node.js 服务器 - 如何安装代理?
- sql-server - 特定行的总和
- spring-boot - 每次我在 WAR 和 IDE 运行之间切换运行模式时,带有 Spring Boot 的 Flyway 都会覆盖整个数据库