3
votes

Python: Pandas - Conversion d'objet en type de chaîne dans dataframe

J'essaye de convertir un objet en chaîne dans mon dataframe en utilisant des pandas. Avoir les données suivantes:

particulars
NWCLG 545627 ASDASD KJKJKJ ASDASD
TGS/ASDWWR42045645010009 2897/SDFSDFGHGWEWER
dtype:object

en essayant de convertir la colonne des détails de objet en chaîne en utilisant astype () [avec str, | S, | S32, | S80] types , ou directement en utilisant les fonctions str , il ne convertit pas en chaîne (reste objet) et pour les méthodes str [en remplaçant '/' par ''] il dit AttributeError: l'objet 'DataFrame' n'a pas d'attribut 'str'

utilisant pandas 0.23.4

Également référencé: https://github.com/pandas-dev/pandas/issues/18796

p>


5 commentaires

Avez-vous essayé comme df [ col1 ] .astype (str)


oui, j'ai essayé, ça reste objet


Pouvez-vous nous montrer un échantillon des données brutes et la commande que vous utilisez pour les convertir en un dataframe pandas?


@ParvBanks En fait, je lis ces données de la feuille Excel mais je ne peux pas mettre un échantillon ici car il est confidentiel


Copie possible de Comment convertir colonne avec dtype comme objet à chaîne dans Pandas Dataframe


3 Réponses :


0
votes

Vous pouvez utiliser:

df['particulars'] = df['particulars'].astype(str).str.replace('/',' ')

Ou:

print(df)

Ensuite, utilisez l'attribut ci-dessous, en fait str pourrait fonctionner même dans votre cas, juste vous y avez accédé de la mauvaise manière, vous ne pouvez y accéder qu'aux colonnes ( Series es):

df['particulars'] = df['particulars'].str.replace('/',' ')

Alors maintenant:

df['particulars'] = df['particulars'].astype(str)

Sera le résultat souhaité.

Modifier:

J'ai réalisé que vous pouvez il suffit de créer tout le code ci-dessous, car object représente str:

df['particulars'] = df['particulars'].astype('|S')


6 commentaires

U9-Forward, j'ai également essayé tous ces éléments, pour les deux premiers, il reste objet et pour le troisième, il provoque l'erreur d'attribut que j'ai mentionnée.


@ArjunMota Utilisez la section Modifier: partie.


Modifier: la section indique également AttributeError


@ArjunMota maintenant?


Nan!! Obtention toujours d'attributError: l'objet 'DataFrame' n'a pas d'attribut 'str'


même problème. J'ai essayé toutes ces suggestions .astype (str) et leurs variations et j'ai toujours dtype: object lorsque j'imprime la valeur, que je veux être juste une chaîne



0
votes

Vous pouvez lire le fichier Excel en spécifiant le dtype comme str:

df['particulars'] = df['particulars'].str.replace('/',' ')

puis utiliser la chaîne de remplacement dans détails de la colonne comme ci-dessous:

df['particulars'] = df[df['particulars'].str.replace('/','')]

Notez que l'affectation df est également une trame de données entre crochets "[]". strong >

Lorsque vous utilisez la commande ci-dessous dans votre programme, elle renvoie une chaîne que vous essayez d'attribuer à une colonne de dataframe. D'où l'erreur.

df = pd.read_excel("Excelfile.xlsx", dtype=str)


1 commentaires

Pas de chance d'obtenir encore AttributeError: l'objet 'DataFrame' n'a pas d'attribut 'str'



0
votes

J'aimerais pouvoir voir l'ensemble du dataframe. Cela dit, avez-vous essayé d'utiliser le code ci-dessous?

df.particulars = df.particulars.apply(lambda x: str(x))


0 commentaires