【问题标题】:Tokenize columns, then combine them标记列,然后组合它们
【发布时间】:2020-12-05 09:21:30
【问题描述】:

我想将两列合并为一列作为单词/标记列表。 目前我的数据集看起来像:

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 的标记。 我希望你能帮助我理解我的错误。谢谢。

【问题讨论】:

标签: python pandas nltk


【解决方案1】:

你可以这样做:

df['BC_Col'] = df['B_Col'].fillna('').str.split() + df['C_Col'].fillna('').str.split()
df
    A_Col   B_Col   C_Col   BC_Col
0   home    my house    I have a new house  [my, house, I, have, a, new, house]
1   paper   research paper  my mobile phone is broken   [research, paper, my, mobile, phone, is, broken]
2   NaN NaN zoe zaczek who  [zoe, zaczek, who]
3   NaN NaN two per cent    [two, per, cent]

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多