使用 Pandas (Python) 清理分类数据

Cleaning categorical data with Pandas (Python)

我有一个看起来像这样的数据集(见下文)。我想创建一个新列,当 'NASA' 单独或作为较大字符串的一部分出现在第一列时,该列包含值 'NASA'。如何为 python 中的 pandas 数据框执行此操作?

谢谢!

index selection
NASA- 16 51
NASA- 12 39
NASA- 8 38
NASA- 13 38
NASA- 9 34
NASA- 10 32
NASA- 15 30
NASA- 14 28
NASA- 17 27
NASA- 18 26
1990 NASA group 25
NASA- 11 23
NASA Astronaut Group 8 20
NASA- 5 19
NASA- 19 18
NASA-8 18
NASA-9 16
1978 NASA group 15
1996 NASA group 15
TsPK-8 15
NPOE-4 15
TsPK-2 14

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