使用Vaex处理动漫推荐数据集时遇TypeError问题求助
Vaex处理动漫推荐数据集时遭遇TypeError错误
使用Vaex处理动漫推荐数据集时,执行data['name_clean'].tolist()时触发TypeError: expected string or bytes-like object错误,相同逻辑用Pandas实现则运行正常。
Vaex实现代码
import pyarrow as pa import vaex import re # 读取数据 anime = vaex.read_csv('/content/drive/MyDrive/Temp Datasets/Anime Recommendation Dataset/anime.csv') user = vaex.read_csv('/content/drive/MyDrive/Temp Datasets/Anime Recommendation Dataset/rating.csv') # 移除非字母字符 @vaex.register_function() def replacer(x): res = [re.sub('[^A-Za-z]', ' ', value) for value in x.tolist()] res = [re.sub(' +', ' ', value.lower()) for value in res] # 移除多余空格 return pa.array(res, pa.string()) anime['name_clean'] = anime.func.replacer(anime['name']) anime = anime[anime['name_clean']!=' '] # 过滤空文本 anime['name_clean'] # 合并动漫与用户数据 data = user[['user_id', 'anime_id']].join( anime[['anime_id', 'name_clean']], on='anime_id')['user_id', 'name_clean'] data['user_id'] = data['user_id'].astype('str')
错误触发代码
data['name_clean'].tolist()
错误提示:TypeError: expected string or bytes-like object
Pandas实现代码
import pandas as pd # 读取数据 anime = pd.read_csv('/content/drive/MyDrive/Temp Datasets/Anime Recommendation Dataset/anime.csv') user = pd.read_csv('/content/drive/MyDrive/Temp Datasets/Anime Recommendation Dataset/rating.csv') # 移除非字母字符 def replacer(x): res = re.sub('[^A-Za-z]', ' ', x) res = re.sub(' +', ' ', res.lower()) # 移除多余空格 return res anime['name'] = anime['name'].apply(replacer) anime = anime[anime['name']!=' '] # 过滤空文本 # 合并动漫与用户数据 data = user[['user_id', 'anime_id']].merge( anime[['anime_id', 'name']], on='anime_id') data['user_id'] = data['user_id'].astype('str')
补充说明
怀疑问题出在Vaex中使用re.sub的方式,打印data['name_clean']显示类型为"string",但找不到Vaex数据框中移除非字母字符的其他可行方法(包括apply方法)来解决此问题。
内容的提问来源于stack exchange,提问作者Aditya Mishra
相关产品推荐
相关产品推荐

