2017-09-18 6 views
0

J'ai un DataFrame avec 2 colonnes de chaînes, importées depuis un fichier tsv. Les deux colonnes doivent être converties en ascii. (C'est parce que je veux passer le texte à travers un pipeline CountVectorizer et TfidfTransformer dans scikit-learn).Comment convertir 2 colonnes DataFrame en ascii?

J'ai parcouru des douzaines de publications à la fois sur stackoverflow et à l'extérieur, mais je n'arrive pas à m'en rendre compte. Mon code est ci-dessous, y compris certaines des choses que j'ai essayées.

Des suggestions pour que cela fonctionne?

# tried including adding encoding="utf-8", does not work 
df = pd.read_csv(questions, usecols = [3, 4, 5], nrows = 10, header=0, sep="\t") 

y = df["is_duplicate"].values 
X = df.drop("is_duplicate", axis=1).values 

for col in X: 
    X = X.encode('utf-8') # does not work 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, 
random_state = 21, stratify = y) 

def flat_list(my_list): 
    return [str(item) for sublist in my_list for item in sublist] 

def transform_data(trans_obj_list,dataset_splits): 
    X_train = dataset_splits[0].astype(str) 

X_train = flat_list(X_train) 

for trfs in trans_obj_list: 
    transformed_vector = trfs().fit(X_train) 
    for x in range(0,len(dataset_splits)): 
     dataset_splits[x] =flat_list(dataset_splits[x].astype(str)) 

return dataset_splits 

new_X_train, new_X_test = transform_data([CountVectorizer,TfidfTransformer], 
[X_train, X_test]) 
+0

Cochez ma réponse sinon, pourriez-vous partager un échantillon de vos données? – MedAli

Répondre

0

Vous devez appeler X.str.encode(..) au lieu de X.encode(..) comme ceci:

for col in X: 
    X = X.str.encode('utf-8') # does not work