python - 使用 Pandas (Python) 清理分类数据
问题描述
我有一个看起来像这样的数据集(见下文)。我想创建一个新列,当“NASA”单独或作为较大字符串的一部分出现在第一列时,该列包含值“NASA”。如何为 python 中的 pandas 数据框执行此操作?
谢谢!
指数 | 选择 |
---|---|
美国国家航空航天局- 16 | 51 |
美国国家航空航天局- 12 | 39 |
美国国家航空航天局- 8 | 38 |
美国国家航空航天局- 13 | 38 |
美国国家航空航天局- 9 | 34 |
美国国家航空航天局- 10 | 32 |
美国国家航空航天局- 15 | 30 |
美国国家航空航天局- 14 | 28 |
美国国家航空航天局- 17 | 27 |
美国国家航空航天局- 18 | 26 |
1990 美国国家航空航天局集团 | 25 |
美国国家航空航天局- 11 | 23 |
美国宇航局宇航员第 8 组 | 20 |
美国国家航空航天局- 5 | 19 |
美国国家航空航天局- 19 | 18 |
NASA-8 | 18 |
NASA-9 | 16 |
1978 年 NASA 小组 | 15 |
1996 年 NASA 小组 | 15 |
TSPK-8 | 15 |
NPOE-4 | 15 |
TSPK-2 | 14 |
解决方案
您可以使用np.where
withstr.contains
检查您的索引列中是否包含“NASA”。请注意,您可以使用case=False
使搜索不区分大小写:
df['new_col'] = np.where(df['index'].str.contains('nasa',case=False),'NASA',"")
df
Out[11]:
index selection new_col
0 NASA- 16 51 NASA
1 NASA- 12 39 NASA
2 NASA- 8 38 NASA
3 NASA- 13 38 NASA
4 NASA- 9 34 NASA
5 NASA- 10 32 NASA
6 NASA- 15 30 NASA
7 NASA- 14 28 NASA
8 NASA- 17 27 NASA
9 NASA- 18 26 NASA
10 1990 NASA group 25 NASA
11 NASA- 11 23 NASA
12 NASA Astronaut Group 8 20 NASA
13 NASA- 5 19 NASA
14 NASA- 19 18 NASA
15 NASA-8 18 NASA
16 NASA-9 16 NASA
17 1978 NASA group 15 NASA
18 1996 NASA group 15 NASA
19 TsPK-8 15
20 NPOE-4 15
21 TsPK-2 14
推荐阅读
- c# - 如何在 C# 中将带有字典的 ArrayList 显式转换为数组?
- sql - 在 SQL 中插入多个列和多个值
- laravel - Laravel domPdf 下载问题与 php artisan serve
- asp.net-mvc - 仅限开发人员:表单提交重定向到登录
- php - 使用 WooCommerce REST API 列出所有具有属性的产品
- r - 带重置的条件累积和
- php - 将 laravel 5.8 升级到 6:致命错误:未捕获的 RuntimeException:尚未设置外观根
- database - 如何检查数据库中的表是来自服务器还是本地 csv 文件?
- flutter - 如何在flutter中实现这种类型的模糊效果
- azure - Azure 应用服务为函数应用纵向扩展或横向扩展