Saltar al contenido

python pandas no lee la primera columna del archivo csv

Te sugerimos que pruebes esta solución en un entorno controlado antes de enviarlo a producción, saludos.

Solución:

A juzgar por sus datos, parece que el delimitador que está usando es un .

Prueba lo siguiente:

a = pandas.DataFrame.from_csv('st1.csv', sep=' ')

El otro problema es que asume que su primera columna es un índice, que también podemos deshabilitar:

a = pandas.DataFrame.from_csv('st1.csv', index_col=None)

Para versiones más nuevas de pandas, pd.DataFrame.from_csv ya no existe y index_col=None ya no funciona con pd.read_csv. Querrás usar pd.read_csv con index_col=False en cambio:

pd.read_csv('st1.csv', index_col=False)

Ejemplo:

(so) URSA-MattM-MacBook:stackoverflow mmessersmith$ cat input.csv 
Date                        Employee        Operation        Order

2001-01-01 08:32:17         User1           Approved         #00045
2001-01-01 08:36:23         User1           Edited           #00045
2001-01-01 08:41:04         User1           Rejected         #00046
2001-01-01 08:42:56         User1           Deleted          #00046
2001-01-02 09:01:11         User1           Created          #00047
2019-10-03 17:23:45         User1           Approved         #72681

(so) URSA-MattM-MacBook:stackoverflow mmessersmith$ python
Python 3.7.4 (default, Aug 13 2019, 15:17:50) 
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> pd.__version__
'0.25.1'              
>>> df_bad_index = pd.read_csv('input.csv', delim_whitespace=True)
>>> df_bad_index
                Date Employee Operation   Order
2001-01-01  08:32:17    User1  Approved  #00045
2001-01-01  08:36:23    User1    Edited  #00045
2001-01-01  08:41:04    User1  Rejected  #00046
2001-01-01  08:42:56    User1   Deleted  #00046
2001-01-02  09:01:11    User1   Created  #00047
2019-10-03  17:23:45    User1  Approved  #72681
>>> df_bad_index.index
Index(['2001-01-01', '2001-01-01', '2001-01-01', '2001-01-01', '2001-01-02',
       '2019-10-03'],
      dtype='object')
>>> df_still_bad_index = pd.read_csv('input.csv', delim_whitespace=True, index_col=None)
>>> df_still_bad_index
                Date Employee Operation   Order
2001-01-01  08:32:17    User1  Approved  #00045
2001-01-01  08:36:23    User1    Edited  #00045
2001-01-01  08:41:04    User1  Rejected  #00046
2001-01-01  08:42:56    User1   Deleted  #00046
2001-01-02  09:01:11    User1   Created  #00047
2019-10-03  17:23:45    User1  Approved  #72681
>>> df_still_bad_index.index
Index(['2001-01-01', '2001-01-01', '2001-01-01', '2001-01-01', '2001-01-02',
       '2019-10-03'],
      dtype='object')
>>> df_good_index = pd.read_csv('input.csv', delim_whitespace=True, index_col=False)
>>> df_good_index
         Date  Employee Operation     Order
0  2001-01-01  08:32:17     User1  Approved
1  2001-01-01  08:36:23     User1    Edited
2  2001-01-01  08:41:04     User1  Rejected
3  2001-01-01  08:42:56     User1   Deleted
4  2001-01-02  09:01:11     User1   Created
5  2019-10-03  17:23:45     User1  Approved
>>> df_good_index.index
RangeIndex(start=0, stop=6, step=1)

Basado en documentación que compara read_csv y from_csvmuestra que es posible poner index_col = None. Intenté lo siguiente y funcionó:

DataFrame.from_csv('st1.csv', index_col=None);

Esto supone que los datos están separados por comas.

Por favor revise el siguiente enlace

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_csv.html

Al final de todo puedes encontrar las críticas de otros sys admins, tú además puedes insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *