Warum gibt pandas dataframe 2 Spalten zurück, wenn nur 1 ausgewählt ist [duplizieren]

Nov 23 2020

Beim Erstellen einiger Diagramme mit matplotlib habe ich ein seltsames Verhalten von Pandas festgestellt. Wenn ich nur eine Spalte auswähle, werden 2 zurückgegeben.

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

Ausgabe:

-0.002 -0.1225 0.000
-0.1225
0.002 -0.1224
0.004 -0.1225
Name: time_0, dtype: float64

Es werden Werte aus beiden Spalten "time_0" und "1" angezeigt, es wurde jedoch nur "time_0" ausgewählt. Ist das ein Fehler oder eine Funktion?

Antworten

1 adirabargil Nov 23 2020 at 17:31

Ihr Datenrahmen gibt nur eine Zeile zurück, prioniert aber auch den Index, der mit der Spalte "1" identisch ist.

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

Es scheint, als würde ungewollt die erste Spalte als Index verwendet. Die letzte Spalte wird als Nanowert verwendet, da ,in jeder Zeile zusätzliche Werte enthalten sind .

Versuchen Sie, Folgendes zu entfernen ,:

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

Dieser Code wird gedruckt

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