Dlaczego panda dataframe zwraca 2 kolumny, gdy wybrano tylko 1 [duplikat]

Nov 23 2020

Podczas tworzenia niektórych wykresów za pomocą matplotlib zauważyłem dziwne zachowanie pand, gdy zaznaczę tylko 1 kolumnę, zwraca 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"])

Wynik:

-0,002 -0,1225
0,000 -0,1225
0,002 -0,1224
0,004 -0,1225
Nazwa: czas_0, dtyp: float64

Pokazuje wartości z obu kolumn „time_0” i „1”, ale wybrano tylko „time_0”. Czy to błąd czy funkcja?

Odpowiedzi

1 adirabargil Nov 23 2020 at 17:31

twoja ramka danych zwraca tylko jedną linię, ale zawiera również indeks, który jest taki sam jak kolumna "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

wygląda na to, że nieumyślnie przyjmuje pierwszą kolumnę jako indeks ... pobiera ostatnią kolumnę jako wartość nan z powodu dodatkowych ,w każdym wierszu ....

spróbuj usunąć ,:

 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"])

ten kod zostanie wydrukowany

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