Lorsque je lis un fichier csv dans pandas dataframe, chaque colonne est convertie en ses propres types de données. J'ai une colonne qui a été convertie en objet. Je souhaite effectuer des opérations sur les chaînes pour cette colonne, telles que le fractionnement des valeurs et la création d'une liste. Mais une telle opération n'est pas possible car son type est object. Quelqu'un peut-il me dire, s'il vous plaît, comment convertir tous les éléments d'une colonne en chaînes plutôt qu'en objets?
J'ai essayé plusieurs façons mais rien n'a fonctionné. J'ai utilisé astype, str (), to_string etc.
a=lambda x: str(x).split(',')
df['column'].apply(a)
df['column'].astype(str)
comme les types de données de chaînes ont une longueur variable, il est stocké par défaut en tant que type d'objet. Si vous voulez les stocker en tant que type de chaîne, vous pouvez faire quelque chose comme ceci.
df['column'] = df['column'].astype('|S80') #where the max length is set at 80 bytes,
ou bien
df['column'] = df['column'].astype('|S') # which will by default set the length to the max len it encounters
Ne pas répondre directement à la question, mais cela pourrait aider quelqu'un d'autre.
J'ai une colonne appelée Volume
, ayant à la fois -
(invalide/NaN) et des nombres mis en forme avec ,
df['Volume'] = df['Volume'].astype('str')
df['Volume'] = df['Volume'].str.replace(',', '')
df['Volume'] = pd.to_numeric(df['Volume'], errors='coerce')
La conversion en chaîne est obligatoire pour qu'elle s'applique à str.replace
Vous pouvez essayer d'utiliser df['column'].str.
puis d'utiliser n'importe quelle fonction de chaîne. Pandas la documentation inclut ceux comme split