Python pandas: Warum ist df.iloc[:, :-1].Werte für meine Trainingsdaten wählen Sie bis nur die vorletzte Spalte?
Sehr einfach ausgedrückt, für die gleiche Ausbildung data frame df, wenn ich mit
X = df.iloc[:, :-1].Werte, es wird dann bis in die vorletzte Spalte des data Frames, anstatt die Letzte Spalte (das ist, was ich will, ABER es ist ein merkwürdiges Verhalten habe ich noch nie gesehen), und ich wissen, wie die vorletzte Spalte, die den Wert und die Letzte Spalte den Wert für diese Zeile ist anders.
Jedoch mit
y = df.iloc[:, -1].die Werte gibt mir die Zeile Vektor-von der letzten Spalte die Werte, das ist genau das, was ich will. Warum ist die negative 1 für X, dass Sie mir den zweiten, letzten Spalte ist der Wert statt?
bis in die Letzte Spalte, die aber nicht einschließlich der letzten Spalte, da python reicht / Scheiben beinhalten nicht das Ende... ich verstehe nicht, was Sie erwarten stattdessen...
wie
Oh ja, ich sehe...ich missverstanden -1 wie immer die Auswahl der letzten Spalte.
wie
data = [1,2,3,4,5]
dann eine Scheibe bis zum letzten element data[:-1] -> [1,2,3,4]
entfernen würde, die Letzte, denn der Endpunkt ist das Letzte element und Scheiben enthalten niemals den Endpunkt... genau Das ist das beabsichtigte Verhalten.df.iloc[:, 2]
wählt die zweite Spalte aber df.iloc[:, :2]
oder explizit df.iloc[:, 0:2]
wählt die Spalten, bis (ausschließlich) in der zweiten Spalte. Es ist das gleiche wie Python-Scheiben. Wenn du einen negativen index, ändert sich nichts. Wenn Sie sagen df.iloc[:, -1]
es bedeutet die Letzte Spalte, aber df.iloc[:, :-1]
bedeutet, bis die Letzte Spalte.Oh ja, ich sehe...ich missverstanden -1 wie immer die Auswahl der letzten Spalte.
-1
indice nicht immer mit der "letzten element", sondern in Scheiben, den Endpunkt ist ausgeschlossen. Dies ist das gleiche Verhalten für positive Indizes zum Beispiel: data = "abcde"
indice 2
bezieht sich auf "c"
und data[:2]
wird alles bis einschließlich, aber nicht c
so data[:2] -> "ab"
InformationsquelleAutor kwotsin | 2016-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass du nur zwei Spalten in
df
, denn wenn es mehr Spalten,iloc
wählen Sie alle Spalten ohne last:Und was zurück
print df.columns
?Es gibt mir ein array von [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], wie ich gelesen df mit header = None
Hmm, aber screenshot zurück
X.shape = (670294, 23)
es bedeutet, dass alle Spalten ohne den letzten.hmm ja ich habe erkannt das -1 bedeutet nicht immer "die Letzte Spalte'; im Kontext der Scheiben tatsächlich bedeutet es "bis vor die Letzte Spalte'.
InformationsquelleAutor jezrael
Nur für Klarheit
Mit Bezug auf python-syntax, diese Frage wurde hier beantwortet.
Python-list-slicing-syntax besagt, dass für
a:b
es wirda
und alles, was bis zu, aber nicht einschließlichb
.a:
erhaltena
alles danach.:b
bekommen alles vorb
aber nichtb
. In der Liste index der-1
bezieht sich auf das Letzte element.:-1
hält sich an die gleichen standards wie oben, dass dies wird alles vor dem letzten element, aber nicht das Letzte element. Wenn Sie möchten, dass das Letzte element enthalten, verwenden:
.InformationsquelleAutor piRSquared
Bcz Obere Grenze ist exklusiv. Seine ähnlich wie slicing einer Liste:
Folge [1, 2, 3]. Es dauerte nicht das Letzte element ist.
InformationsquelleAutor Manoj Kumar