gpt4 book ai didi

Python Pandas NLTK 标记 Pandas 数据帧中的列 : expected string or bytes-like object

转载 作者:行者123 更新时间:2023-12-01 01:23:55 24 4
gpt4 key购买 nike

我有以下带有“problem_definition”列的示例数据框:

ID  problem_definition  
1 cat, dog fish
2 turtle; cat; fish fish
3 hello book fish
4 dog hello fish cat

我想对“problem_definition”列进行单词标记。

下面是我的代码:

from nltk.tokenize import sent_tokenize, word_tokenize 
import pandas as pd

df = pd.read_csv('log_page_nlp_subset.csv')

df['problem_definition_tokenized'] = df['problem_definition'].apply(word_tokenize)

上面的代码给出了以下错误:

类型错误:预期的字符串或类似字节的对象

最佳答案

您的实际 df['TEXT'] 中可能存在一个非字符串类对象(例如 NaN),该对象未在您发布的数据中显示.

您可以通过以下方式找到有问题的值:

mask = [isinstance(item, (str, bytes)) for item in df['TEXT']]
print(df.loc[~mask])

如果您想删除这些行,可以使用

df = df.loc[mask]

或者,as PineNuts0 points out ,可以使用

将整个列强制转换为 str dtype
df['TEXT'] = df['TEXT'].astype(str)
<小时/>

例如,如果 df['TEXT'] 中有 NaN 值,

import pandas as pd
from nltk.tokenize import sent_tokenize, word_tokenize

df = pd.DataFrame({'ID': [1, 2, 3, 4],
'TEXT': ['cat, dog fish',
'turtle; cat; fish fish',
'hello book fish',
np.nan]})
# ID TEXT
# 0 1 cat, dog fish
# 1 2 turtle; cat; fish fish
# 2 3 hello book fish
# 3 4 NaN

# df['TEXT'].apply(word_tokenize)
# TypeError: expected string or buffer


mask = [isinstance(item, (str, bytes)) for item in df['TEXT']]
df = df.loc[mask]
# ID TEXT
# 0 1 cat, dog fish
# 1 2 turtle; cat; fish fish
# 2 3 hello book fish

现在应用word_tokenize有效:

In [108]: df['TEXT'].apply(word_tokenize)
Out[108]:
0 [cat, ,, dog, fish]
1 [turtle, ;, cat, ;, fish, fish]
2 [hello, book, fish]
Name: TEXT, dtype: object

关于Python Pandas NLTK 标记 Pandas 数据帧中的列 : expected string or bytes-like object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53527230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com