J'ai un dataframe dans les pandas avec des colonnes de données mixtes int et str. Je veux concaténer d'abord les colonnes dans le dataframe. Pour ce faire, je dois convertir une int
colonne en str
. J'ai essayé de faire comme suit:
mtrx['X.3'] = mtrx.to_string(columns = ['X.3'])
ou
mtrx['X.3'] = mtrx['X.3'].astype(str)
mais dans les deux cas cela ne fonctionne pas et j'obtiens une erreur disant "impossible de concaténer les objets 'str' et 'int'". La concaténation de deux str
colonnes fonctionne parfaitement.
Réponses:
Convertir une série
N'oubliez pas de renvoyer le résultat:
Convertir le cadre entier
la source
Modifier le type de données de la colonne DataFrame:
À int:
df.column_name = df.column_name.astype(np.int64)
À str:
df.column_name = df.column_name.astype(str)
la source
apply(str)
de @Jeff, dans mon test en utilisantpd.Series(np.arange(1000000))
.df['A'] = df['A'].apply(str)
fonctionne également. La réponse fournie par @Jeff ne fonctionne pas pour moi.apply()
au lieu deastype()
: timeit.Timer ('c.apply (str)', setup = 'import pandas as pd; c = pd.Series (range ( 1000)) '). Timeit (1000) >>> 0.41499893204309046 >>> timeit.Timer (' c.astype (str) ', setup =' import pandas as pd; c = pd.Series (range (1000)) ' ) .timeit (1000) 0.8004439630312845Attention : les deux solutions données ( astype () et apply () ) ne conservent pas les valeurs NULL sous la forme nan ou None.
Je pense que cela est corrigé par l'implémentation de to_string ()
la source
Utilisez le code suivant:
la source
Juste pour une référence supplémentaire.
Toutes les réponses ci-dessus fonctionneront dans le cas d'une trame de données. Mais si vous utilisez lambda lors de la création / modification d'une colonne, cela ne fonctionnera pas, car il est considéré comme un attribut int au lieu d'une série pandas. Vous devez utiliser str (target_attribute) pour en faire une chaîne. Veuillez vous référer à l'exemple ci-dessous.
la source