Pourquoi pandas dataframe renvoie-t-il 2 colonnes alors qu’une seule est sélectionnée [dupliquer]

Nov 23 2020

En créant des parcelles avec matplotlib, j'ai trouvé un comportement étrange des pandas, lorsque je ne sélectionne qu'une colonne, il renvoie 2.

import pandas as pd
import io

data = io.StringIO("""time_0,1,time_1,2,time_2,0,time_3,3
-0.002,-0.1225,-0.002,-0.0904,-0.002,0.0331,-0.002,0.,
0.0,-0.1225,0.,-0.0904,0.,0.0331,0.,0.,
0.002,-0.1224,0.002,-0.0904,0.002,0.0331,0.002,0.,
0.004,-0.1225,0.004,-0.0904,0.004,0.0331,0.004,0.,""")

df = pd.read_csv(data)
print(df["time_0"])

Production:

-0,002 -0,1225
0,000 -0,1225
0,002 -0,1224
0,004 -0,1225
Nom: time_0, dtype: float64

Il affiche les valeurs des deux colonnes "time_0" et "1", mais seul "time_0" a été sélectionné. Est-ce un bug ou une fonctionnalité?

Réponses

1 adirabargil Nov 23 2020 at 17:31

votre dataframe ne renvoie qu'une seule ligne, mais il prionète également l'index qui est le même que la colonne "1"

df
Out[3]: 
        time_0      1  time_1      2  time_2      0  time_3   3
-0.002 -0.1225 -0.002 -0.0904 -0.002  0.0331 -0.002     0.0 NaN
 0.000 -0.1225  0.000 -0.0904  0.000  0.0331  0.000     0.0 NaN
 0.002 -0.1224  0.002 -0.0904  0.002  0.0331  0.002     0.0 NaN
 0.004 -0.1225  0.004 -0.0904  0.004  0.0331  0.004     0.0 NaN

il semble qu'il prend involontairement la première colonne comme index ... il prend la dernière colonne comme une valeur nan à cause du supplément ,dans chaque ligne ...

essayez de supprimer le ,:

 import pandas as pd
 import io
 
 data = io.StringIO("""time_0,1,time_1,2,time_2,0,time_3,3
 -0.002,-0.1225,-0.002,-0.0904,-0.002,0.0331,-0.002,0.
 0.0,-0.1225,0.,-0.0904,0.,0.0331,0.,0.
 0.002,-0.1224,0.002,-0.0904,0.002,0.0331,0.002,0.
 0.004,-0.1225,0.004,-0.0904,0.004,0.0331,0.004,0.""")
 
 df = pd.read_csv(data)
 print(df["time_0"])

ce code s'imprimera

0   -0.002
1    0.000
2    0.002
3    0.004
Name: time_0, dtype: float64