2 回答

TA贡献1846条经验 获得超7个赞
错误指向这一行:
df['content'] = df['content'].apply(lambda x: " ".join(x.lower() for x in x.split() \
if x not in stop_words))
split这里用作 Python 内置str类的方法。您的错误表明中的一个或多个值df['content']的类型为float。这可能是因为存在空值,即NaN,或非空浮点值。
一个解决办法,这将字符串化浮动,是只适用str于x使用前split:
df['content'] = df['content'].apply(lambda x: " ".join(x.lower() for x in str(x).split() \
if x not in stop_words))
或者,可能是更好的解决方案,明确并使用带有try/except子句的命名函数:
def converter(x):
try:
return ' '.join([x.lower() for x in str(x).split() if x not in stop_words])
except AttributeError:
return None # or some other value
df['content'] = df['content'].apply(converter)
由于pd.Series.apply只是一个有开销的循环,您可能会发现列表理解或map更有效:
df['content'] = [converter(x) for x in df['content']]
df['content'] = list(map(converter, df['content']))

TA贡献1827条经验 获得超4个赞
split() 是一种仅适用于字符串的 Python 方法。似乎您的“内容”列不仅包含字符串,还包含其他值,例如无法应用 .split() 方法的浮点数。
尝试使用 str(x).split() 将值转换为字符串,或者首先将整个列转换为字符串,这样效率会更高。您按如下方式执行此操作:
df['column_name'].astype(str)
没有找到匹配的内容?试试慕课网站内搜索吧
添加回答
举报