标记列,然后组合它们
Tokenize columns, then combine them
我想将两列合并为一列作为 words/tokens 的列表。
目前我的数据集看起来像:
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_Col
和 C_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_Col
和 C_Col
的标记化。
我希望你能帮助我理解我的错误。谢谢。
你可以这样做:
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]
我想将两列合并为一列作为 words/tokens 的列表。 目前我的数据集看起来像:
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_Col
和 C_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_Col
和 C_Col
的标记化。
我希望你能帮助我理解我的错误。谢谢。
你可以这样做:
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]