165 votes

Obtenir de pandas.read_csv qu'il lise les valeurs vides comme une chaîne vide au lieu de nan

J'utilise la bibliothèque pandas pour lire des données CSV. Dans mes données, certaines colonnes contiennent des chaînes de caractères. La chaîne "nan" est une valeur possible, tout comme une chaîne vide. J'ai réussi à faire en sorte que pandas lise "nan" comme une chaîne de caractères, mais je n'arrive pas à comprendre comment faire pour qu'il ne lise pas une valeur vide comme NaN. Voici un exemple de données et de résultats

One,Two,Three
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven

>>> pandas.read_csv('test.csv', na_values={'One': [], "Three": []})
    One  Two  Three
0    a    1    one
1    b    2    two
2  NaN    3  three
3    d    4    nan
4    e    5   five
5  nan    6    NaN
6    g    7  seven

Il lit correctement "nan" comme la chaîne "nan", mais lit toujours les cellules vides comme NaN. J'ai essayé de passer str dans le converters à read_csv (avec converters={'One': str}) ), mais il lit toujours les cellules vides comme NaN.

Je sais que je peux remplir les valeurs après lecture, avec fillna, mais n'y a-t-il vraiment aucun moyen de dire à pandas qu'une cellule vide dans une colonne CSV particulière doit être lue comme une chaîne vide au lieu de NaN ?

0voto

Dan Points 142

pd.read_csv( sourceObj, dtype='string')

aucun paramètre supplémentaire n'est nécessaire.

Chaque type de colonne est une chaîne primitive python et les valeurs vides deviennent des chaînes vides ''.

Version : Pandas v1.5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X