Estoy usando la biblioteca pandas para leer algunos datos CSV. En mis datos, ciertas columnas contienen cadenas. La cadena "nan"
es un valor posible, como una cadena vacía. Me las arreglé para que los pandas leyeran "nan" como una cadena, pero no logro encontrar la forma de que no lea un valor vacío como NaN. He aquí los datos de la muestra y de salidaObtenga pandas.read_csv para leer valores vacíos como cadena vacía en lugar de nan
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
correctamente lee "nan", como la cadena "nan', pero todavía se puede leer las celdas vacías como NaN. He intentado pasar en str
en el argumento converters
a read_csv (con converters={'One': str})
), pero todavía lee las celdas vacías como NaN.
Me doy cuenta de que puedo completar los valores después de leer, con fillna, pero ¿realmente no hay forma de decirle a los pandas que una celda vacía en una columna CSV particular debe leerse como una cadena vacía en lugar de NaN?
[Documentación para 'DataFrame.fillna'.] (Http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html) Pruebe' result.fillna ('', inplace = True) '. De lo contrario, crea una copia del marco de datos. – osa
siento resucitar una respuesta tan antigua, pero ¿sucedió alguna vez? Por lo que puedo decir de [este GitHub PR] (https: // github.com/pydata/pandas/pull/1522) se cerró sin haber sido fusionada, y no estoy viendo el comportamiento solicitado en pandas versión 0.14.x – drammock
[Documentación] (http://pandas.pydata.org/pandas- docs/stable/generated/pandas.read_csv.html) para read_csv ahora ofrece tanto 'na_values' (list o dict indexados por columnas) como' keep_default_na' (bool). El valor 'keep_default_na' indica si los valores predeterminados de NA de pandas deben ser reemplazados o anexados. El código de OP no funciona actualmente solo porque falta esta bandera. Para este ejemplo, puede usar 'pandas.read_csv ('test.csv', na_values = ['nan'], keep_default_na = False)'. – delgadom