Ich habe über diese zu lesen und immer noch das Thema ein wenig verwirrend finden: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copySet erste und die letzte Zeile einer Spalte in einem Datenrahmen
sagen, dass ich ein Panda-Datenrahmen haben und ich möchte die erste gleichzeitig eingestellt und letzte Zeilenelemente einer einzelnen Spalte auf einen beliebigen Wert. Ich kann dies tun:
df.iloc[[0, -1]].mycol = [1, 2]
, die sagt mir A value is trying to be set on a copy of a slice from a DataFrame.
und dass dies potentiell gefährlich.
Ich könnte stattdessen .loc
verwenden, aber dann muss ich den Index der ersten und letzten Zeilen wissen (im Gegensatz, .iloc
ermöglicht mir den Zugriff nach Standort).
Was ist der sicherste Pandasy-Weg, dies zu tun?
zu diesem Punkt zu kommen:
# Django queryset
query = market.stats_set.annotate(distance=F("end_date") - query_date)
# Generate a dataframe from this queryset, and order by distance
df = pd.DataFrame.from_records(query.values("distance", *fields), coerce_float=True)
df = df.sort_values("distance").reset_index(drop=True)
Dann versuche ich, ruft df.distance.iloc[[0, -1]] = [1, 2]
. Dies wirft die Warnung auf.
funktioniert 'df ['mycol']. Iloc [[0, -1]] = [1, 2]' Arbeit? – EdChum
Gleiche Warnung, ob ich Zeilen oder Spalten zuerst indexiere. – Quentin
Sie müssen genau alle Schritte zeigen, die zu der Warnung führen, da meine Antwort zeigt, dass dies richtig funktioniert – EdChum