Ich bin ein relativ neuer Benutzer von Pandas und benutze ihn, um Zeitreihen von BLS (Bureau of Labor Statistics) zu analysieren (heruntergeladen von ihrer FTP-Site). Aber ich stieß auf ein Problem, das ich in dem unten stehenden Python-Programm wiedergegeben habe:Möglicher Fehler in der Funktion pandas squeeze()
import pandas as pd
import numpy as np
yvals1 = np.array([10.])
yvals2 = np.array([10., 20.])
df1 = pd.DataFrame({"yvals": yvals1})
df2 = pd.DataFrame({"yvals": yvals2})
Der Inhalt der Datenframe-Objekte df1
und df2
ist wie erwartet:
df1:
yvals
0 10.0
df2:
yvals
0 10.0
1 20.0
jedoch die Anwendung des Squeeze() -Methode gibt unterschiedliche Ergebnisse für df1
und df2
.
df1.squeeze():
10.0
f2.squeeze():
0 10.0
1 20.0
Name: yvals, dtype: float64
Wie aus der Dokumentation zu erwarten, gibt df2.squeeze()
eine Pandas Serie Objekt mit zwei Reihen, aber df1.squeeze()
gibt einen skalaren numpy.float64
anstelle eines Objekts Panda-Serie mit einer Zeile. Dies muss ein Fehler sein und kein Feature, da eine Reihe mit 1 Reihe genauso behandelt werden sollte wie jede andere Reihe, wenn keine Vorinformation vorhanden ist.
Ich benutze Python 2.7.13 und Pandas 0.20.1. Vielen Dank im Voraus für jede Hilfe.
Danke für die schnelle Antwort. Ich hätte erkennen sollen, dass 'squeeze()' jetzt ein 'axis' Argument hat. Es ist interessant, dass für eine einzelne Zeile die Vorgabe "axis = None" einen Skalar gibt, aber "axis = 0" und "axis = 1" beide ein Pandas Series-Objekt ergeben. Wie auch immer, danke nochmal; Du hast mir mehr zum Nachdenken gegeben. –