基于 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 将 DataFrame 中某些列和行的值替换为同一 DataFrame 中另一列的值