J'ai un Pandas Dataframe 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 afin qu'il ressemble à ceci:
1 2 3
0 a "" read
1 b l unread
2 c "" read
import numpy as np
df1 = df.replace(np.nan, '', regex=True)
Cela pourrait aider. Il remplacera tous les NaN par une chaîne vide.
Un peu plus court est:
df = df.fillna('')
ou juste
df.fillna('',inplace=True)
Cela remplira les na (ex. NaN) avec ''.
Si vous souhaitez remplir une seule colonne, vous pouvez utiliser:
df[column1] = df.column1.fillna('')
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 ''
df = df.replace(np.nan, '', regex=True)
df = df.fillna('')
tilisez un formateur, si vous voulez seulement le formater pour qu’il soit bien rendu à l’impression. Utilisez simplement le df.to_string(... formatters
pour définir le formatage de chaîne personnalisé, sans modifier inutilement votre DataFrame ni gaspiller de la mémoire:
df = pd.DataFrame({
'A': ['a', 'b', 'c'],
'B': [np.nan, 1, np.nan],
'C': ['read', 'unread', 'read']})
print df.to_string(
formatters={'B': lambda x: '' if pd.isnull(x) else '{:.0f}'.format(x)})
Obtenir:
A B C
0 a read
1 b 1 unread
2 c read
utiliser keep_default_na=False
devrait vous aider à:
df = pd.read_csv(filename, keep_default_na=False)
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 quelques valeurs:
df.columnname.replace(np.nan,'value',regex = True)
J'ai essayé df.iloc aussi. mais il faut l'index de la colonne. vous devez donc regarder à nouveau dans la table. simplement la méthode ci-dessus réduite d'un pas.
Essaye ça,
ajouter inplace=True
import numpy as np
df.replace(np.NaN, ' ', inplace=True)
Si vous convertissez DataFrame en JSON, NaN
donnera une erreur, la meilleure solution est donc de remplacer NaN
par None
.
Voici comment:
df1 = df.where((pd.notnull(df)), None)