I'm getting a TypeError: expected string or bytes-like object when I'm processing this dataset using Vaex python library. I've written the following code:
import pyarrow as pa
import vaex
import re
# Reading Data
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')
# Removing Non-Alphanumeric characters
@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] # Remove redundant whitespace
return pa.array(res, pa.string())
anime['name_clean'] = anime.func.replacer(anime['name'])
anime = anime[anime['name_clean']!=' '] # Filter empty text
anime['name_clean']
# Merging anime and users
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')
The problem occurs when I do
data['name_clean'].tolist()
When I process the same dataset using pandas everything works fine.
import pandas as pd
# Reading Data
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')
# Removing Non-Alphanumeric characters
def replacer(x):
res = re.sub('[^A-Za-z]', ' ', x)
res = re.sub(' +', ' ', res.lower()) # Remove redundant whitespace
return res
anime['name'] = anime['name'].apply(replacer)
anime = anime[anime['name']!=' '] # Filter empty text
# Merging anime and users
data = user[['user_id', 'anime_id']].merge(
anime[['anime_id', 'name']], on='anime_id')
data['user_id'] = data['user_id'].astype('str')
P.S. I think the problem is with using re.sub() with Vaex because when I print data['clean_name'] we can see the type is "string". I can't find any solution or any other way including apply method for removing non-alphanumeric characters in vaex dataframe without causing this problem.