首页 > 解决方案 > 使用 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

标签: pythonpandasdataframeconditional-statementsfuzzy-comparison

解决方案


您可以使用np.wherewithstr.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        

推荐阅读