标记列,然后合并它们

问题描述

我想将两列合并为一个单词/标记列表。 目前,我的数据集如下:

A_Col   B_Col             C_Col
home    my house          I have a new house
paper   research paper    my mobile phone is broken
NaN     NaN               zoe zaczek who
NaN     NaN               two per cent

NaN是空白字段的值。

我要执行的操作如下:保留列A_Col,但合并B_ColC_Col以便具有以下内容

A_Col   BC_Col            
home    ['my','house','I','have','a','new','house']
paper   ['research','paper','my','mobile','phone','is,','broken']
NaN     ['zoe','zaczek','who']
NaN     ['two','per','cent']

针对问题,所需步骤应为:

  • 令牌化B_Col;
  • 令牌化C_Col;
  • 合并结果;
  • 删除NaN值,无论是否是

对于前两点,我使用以下内容

df['B_Col'] = df.apply(lambda row: nltk.word_tokenize(row['B_Col']))
df['C_Col'] = df.apply(lambda row: nltk.word_tokenize(row['C_Col']))

对于合并结果:

df['BC_Col'] = df['B_Col'] + df['C_Col']

然后我应该删除NaN值。

但是,由于我没有获得B_ColC_Col的令牌化,所以某些代码无法正常工作。 希望您能帮助我理解我的错误。谢谢。

解决方法

您可以这样做:

if (boolean1 && boolean2)
df['BC_Col'] = df['B_Col'].fillna('').str.split() + df['C_Col'].fillna('').str.split()
df