J'ai un cadre de données Pandas comme indiqué ci-dessous:
1 2 3
0 a NaN read
1 b l unread
2 c NaN read
Je veux supprimer les valeurs NaN avec une chaîne vide pour qu'elle ressemble à ceci:
1 2 3
0 a "" read
1 b l unread
2 c "" read
np.nan
vient-il? Je ne peux pas l'utiliserimport numpy as np
.pd.np.nan
si vous ne le souhaitez pasimport numpy
aussi.pd.DataFrame.from_dict(eval(_string_))
... inplace=True
option.ou juste
Cela remplira les na (par exemple les NaN) avec
''
.Si vous souhaitez remplir une seule colonne, vous pouvez utiliser:
On peut utiliser à la
df['column1']
place dedf.column1
.la source
df[['column1','column2']] = df[['column1','column2']].fillna('')
Si vous lisez la trame de données d'un fichier (par exemple CSV ou Excel), utilisez:
df.read_csv(path , na_filter=False)
df.read_excel(path , na_filter=False)
Cela considérera automatiquement les champs vides comme des chaînes vides
''
Si vous avez déjà la trame de données
df = df.replace(np.nan, '', regex=True)
df = df.fillna('')
la source
xl.parse('sheet_name', na_filter=False)
Utilisez un formateur, si vous souhaitez uniquement le formater afin qu'il soit bien rendu lors de l'impression . Utilisez simplement le
df.to_string(... formatters
pour définir un formatage de chaîne personnalisé, sans modifier inutilement votre DataFrame ni gaspiller de mémoire:Obtenir:
la source
print df.fillna('')
par lui-même (sans le fairedf = df.fillna('')
) ne modifie pas l'original non plus. Y a-t-il une vitesse ou un autre avantage à utiliserto_string
?df.fillna('')
ça l'est!Essaye ça,
ajouter
inplace=True
la source
l'utilisation
keep_default_na=False
devrait vous aider:la source
Si vous convertissez DataFrame en JSON,
NaN
l'erreur générera donc la meilleure solution est dans ce cas d'utilisation de remplacerNaN
parNone
.Voici comment:
la source
J'ai essayé avec une colonne de valeurs de chaîne avec nan.
Pour supprimer le nan et remplir la chaîne vide:
df.columnname.replace(np.nan,'',regex = True)
Pour supprimer le nan et remplir certaines valeurs:
df.columnname.replace(np.nan,'value',regex = True)
J'ai également essayé df.iloc. mais il a besoin de l'index de la colonne. vous devez donc regarder à nouveau dans le tableau. la méthode ci-dessus a simplement réduit une étape.
la source