web-dev-qa-db-fra.com

Remplacement d'une partie de la chaîne dans python pandas dataframe

J'ai un problème similaire à celui affiché ici:

Pandas DataFrame: supprimer les parties indésirables des chaînes dans une colonne

J'ai besoin de supprimer les caractères de nouvelle ligne d'une chaîne dans un DataFrame. En gros, j'ai accédé à une API en utilisant le module json de python et c'est tout ok. La création du DataFrame fonctionne également de manière incroyable. Cependant, quand je veux finalement sortir le résultat final dans un csv, je suis un peu bloqué, car il y a des nouvelles lignes qui créent de fausses 'nouvelles lignes' dans le fichier csv.

Donc, fondamentalement, j'essaie de tourner ceci:

'... c'est un paragraphe.

Et ceci est un autre paragraphe ... '

en cela:

'... c'est un paragraphe. Et ceci est un autre paragraphe ... '

Je ne me soucie pas de conserver tout type de '\ n' ou de symboles spéciaux pour le saut de paragraphe. Il peut donc être retiré immédiatement.

J'ai essayé quelques variantes:

misc['product_desc'] = misc['product_desc'].strip('\n')

AttributeError: 'Series' object has no attribute 'strip'

voici un autre

misc['product_desc'] = misc['product_desc'].str.strip('\n')

TypeError: wrapper() takes exactly 1 argument (2 given)

misc['product_desc'] = misc['product_desc'].map(lambda x: x.strip('\n'))
misc['product_desc'] = misc['product_desc'].map(lambda x: x.strip('\n\t'))

Il n'y a pas de message d'erreur, mais les caractères de nouvelle ligne ne disparaissent pas non plus. Même chose avec ça:

misc = misc.replace('\n', '')

L'écriture sur la ligne csv est la suivante:

misc_id.to_csv('C:\Users\jlalonde\Desktop\misc_w_id.csv', sep=' ', na_rep='', index=False, encoding='utf-8')

Version de Pandas est 0.9.1

Merci! :)

26
joseph_pindi

strip supprime uniquement les caractères spécifiés au début et à la fin de la chaîne. Si vous souhaitez supprimer tous\n, vous devez utiliser replace.

misc['product_desc'] = misc['product_desc'].str.replace('\n', '')
47
BrenBarn

Vous pouvez utiliser le paramètre regex de la méthode replace pour y parvenir:

misc['product_desc'] = misc['product_desc'].replace(to_replace='\n', value='', regex=True)
7
Anton Protopopov