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.
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)
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)
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 ()
Utilisez le code suivant:
df.column_name = df.column_name.astype('str')