web-dev-qa-db-fra.com

Conversion d'une colonne dans pandas dataframe de int en chaîne

J'ai une base de données dans pandas avec des colonnes de données mixtes int et str. Je veux d'abord concaténer les colonnes dans le cadre de données. Pour ce faire, je dois convertir une colonne int 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 "ne peut pas concaténer les objets 'str' et 'int'". La concaténation de deux colonnes str fonctionne parfaitement.

80
Malfet
In [16]: df = DataFrame(np.arange(10).reshape(5,2),columns=list('AB'))

In [17]: df
Out[17]: 
   A  B
0  0  1
1  2  3
2  4  5
3  6  7
4  8  9

In [18]: df.dtypes
Out[18]: 
A    int64
B    int64
dtype: object

Convertir une série

In [19]: df['A'].apply(str)
Out[19]: 
0    0
1    2
2    4
3    6
4    8
Name: A, dtype: object

In [20]: df['A'].apply(str)[0]
Out[20]: '0'

N'oubliez pas de redonner le résultat:

df['A'] = df['A'].apply(str)

Convertir le cadre entier

In [21]: df.applymap(str)
Out[21]: 
   A  B
0  0  1
1  2  3
2  4  5
3  6  7
4  8  9

In [22]: df.applymap(str).iloc[0,0]
Out[22]: '0'
df = df.applymap(str)
97
Jeff

Changer le type de données de la colonne DataFrame:

Pour int:

df.column_name = df.column_name.astype(np.int64)

Pour str:

df.column_name = df.column_name.astype(str)

73
tanaque

Avertissement : les deux solutions sont données ( astype () et apply () ) ne conserve pas les valeurs NULL dans les formes nan ou None.

import pandas as pd
import numpy as np

df = pd.DataFrame([None,'string',np.nan,42], index=[0,1,2,3], columns=['A'])

df1 = df['A'].astype(str)
df2 =  df['A'].apply(str)

print df.isnull()
print df1.isnull()
print df2.isnull()

Je crois que ceci est corrigé par l'implémentation de to_string ()

12
Keith

Utilisez le code suivant:

df.column_name = df.column_name.astype('str')
2
Faraz Ramtin