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

Posted

技术标签:

【中文标题】基于 Pandas 中另一列文本的特征工程师文本【英文标题】:Feature Engineer Text Based on Text from Another Column in Pandas 【发布时间】:2021-12-06 21:57:27 【问题描述】:

我试图通过将文本映射到一个名为“programGrp”的新功能来简化一个名为“programName”的功能,在这个功能中,我将它们分组而不是每个程序的低级名称,例如 Mech/Elec/Petroleum Engineering分为 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()。

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

【问题讨论】:

【参考方案1】:

你可以改用这个:

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'])

【讨论】:

以上是关于基于 Pandas 中另一列文本的特征工程师文本的主要内容,如果未能解决你的问题,请参考以下文章

根据 Pandas 中另一列中的索引从列中获取数据

用 pandas 数据框中另一列的值填充多列中的 Na

将语料库中的名称部分匹配到 Pandas 数据框中另一列中的名称

用 Pandas 将 DataFrame 中某些列和行的值替换为同一 DataFrame 中另一列的值

如何计算包含一组列中的值和 Pandas 数据框中另一列中的另一个值的行数?

基于sql中另一列的一列中的最大数据