Estoy usando la biblioteca de pandas para leer algunos datos CSV. En mis datos, ciertas columnas contienen cadenas. La cadena "nan"
es un valor posible, ya que es una cadena vacía. Me las arreglé para hacer que los pandas leyeran “nan” como una cadena, pero no puedo descubrir cómo hacer que no lea un valor vacío como NaN. Aquí hay datos de muestra y salida
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
Lee correctamente “nan” como la cadena “nan”, pero sigue leyendo las celdas vacías como NaN. Intenté pasar str
en el argumento de los converters
a read_csv (con converters={'One': str})
), pero aún así lee las celdas vacias como NaN.
Me doy cuenta de que puedo llenar los valores después de leer, con fillna, pero ¿realmente no hay manera 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?
Agregué un boleto para agregar una opción de algún tipo aquí:
https://github.com/pydata/pandas/issues/1450
Mientras tanto, result.fillna('')
debe hacer lo que quieras
EDITAR: en la versión de desarrollo (que será 0.8.0 final) si especifica una lista vacía de na_values
de na_values
, las cadenas vacías quedarán vacías en el resultado
Todavía estaba confundido después de leer las otras respuestas y comentarios. Pero la respuesta ahora parece más simple, así que aquí tienes.
Desde la versión 0.9 de Pandas (a partir de 2012), puede leer su CSV con celdas vacías interpretadas como cadenas vacías simplemente configurando keep_default_na=False
:
pd.read_csv('test.csv', keep_default_na=False)
Este tema se explica más claramente en
Eso fue arreglado el 19 de agosto de 2012 para la versión 0.9 de Pandas en