基于 Pandas 中另一列文本的特征工程师文本

Feature Engineer Text Based on Text from Another Column in Pandas

我正在尝试通过将文本映射到名为 'programGrp' 的新功能来简化名为 'programName' 的功能,而不是每个程序的低级名称,例如 Mech/Elec/Petroleum工程学,我会把他们分成一般的组,比如 STEM、人文、生命科学等

这是我的尝试:

def fill_stem(df):
  for i in df:
    if df['programName'].str.contains('Engineering') | df['programName'].str.contains('Computer Science') | df['programName'].str.contains('Mathematics'):
      df['programGrp'].loc[i] = 'STEM'

fill_stem(df)

ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

但是当我 运行 它时,我得到了这个错误。关于如何最好地解决这个问题的任何提示?

您可以改用这个:

df.loc[df['programName'].str.contains('Engineering|Computer Science|Mathematics'), 'programName'] = 'STEM'

或:

df['programName'] = np.where(df['programName'].str.contains('Engineering|Computer Science|Mathematics'), 'STEM', df['programName'])