Setzen von Werten mit pandas.DataFrame

8

Diesen Datenrahmen haben:

%Vor%

Ich möchte die Reihe darin durch eine neue ersetzen, die einfach die alte ist, aber auf eine Tagesperiode neu abgetastet wurde (d. h. x.resample('D').sum().dropna() ).

Wenn ich es versuche:

%Vor%

Das scheint gut zu funktionieren:

Allerdings bekomme ich eine Warnung:

%Vor%

Die Frage ist, wie soll ich das stattdessen tun?

Notizen

Dinge, die ich versucht habe, aber nicht funktioniert (Resampling oder nicht, die Zuweisung löst eine Ausnahme aus):

%Vor%

Ein bisschen mehr Informationen über die Daten (falls relevant):

  • Der reale DataFrame hat mehr Spalten im Multi-Index. Nicht alle sind notwendigerweise ganzzahlig, aber allgemeiner numerisch und kategorisch. Der Index ist einzigartig (d.h. es gibt nur eine Zeile mit einem gegebenen Indexwert).
  • Der echte DataFrame hat natürlich noch viel mehr Zeilen (Tausende).
  • Es gibt nicht unbedingt nur zwei Spalten im DataFrame und möglicherweise mehr als 1 Spalten mit einem Series-Typ. Spalten enthalten in der Regel auch Reihen, kategorische Daten und numerische Daten. Jede einzelne Spalte ist immer einzeln typisiert (entweder numerisch oder kategorisch oder Serie).
  • Die in jeder Zelle enthaltenen Reihen haben normalerweise eine variable Länge (dh zwei Serien / Zellen im DataFrame haben keine identische Koinzidenz, und werden wahrscheinlich nie denselben Index haben, da die Daten variieren gut zwischen Serien).

Verwenden von Python 3.5.1 und Pandas 0.18.1.

    
Peque 01.06.2016, 13:17
quelle

3 Antworten

3

Das sollte funktionieren:

%Vor%

Pandas beschweren sich über verkettete Indexierung, aber wenn Sie es nicht so machen, sehen Sie sich mit Problemen konfrontiert, wenn Sie einer Zelle ganze Serien zuweisen. Mit iat können Sie so etwas erzwingen . Ich denke nicht, dass dies vorzuziehen wäre, aber es scheint eine funktionierende Lösung zu sein.

    
ayhan 01.06.2016, 14:44
quelle
0

Setzen Sie einfach df.is_copy = False vor der Zuweisung eines neuen Wertes.

    
Dark Matter 10.06.2016 11:25
quelle
0

Hierarchische Daten in Pandas

Es sieht so aus, als sollten Sie Ihre Daten neu strukturieren, um Pandas-Funktionen wie MultiIndexing zu nutzen. und DateTimeIndex . Dies ermöglicht es Ihnen, weiterhin auf einen Index in der üblichen Weise zu arbeiten , während Sie dazu in der Lage sind Wählen Sie mehrere Spalten in den hierarchischen Daten aus ( a , b und bar ).

Umstrukturierte Daten

%Vor% %Vor%

Neuabtastung

Mit den Daten in diesem Format wird das Resampling sehr einfach.

%Vor% %Vor%

Update (aus Datenbeschreibung)

Wenn die Daten eine variable Länge Series mit jeweils unterschiedlichen index und nicht-numerischen Kategorien haben, ist das in Ordnung. Lassen Sie uns ein Beispiel geben:

%Vor% %Vor%

Das einzige Problem ist das nach dem Resampling. Sie werden how='all' beim Löschen verwenden na Zeilen wie folgt:

%Vor% %Vor%     
tmthydvnprt 10.06.2016 04:18
quelle

Tags und Links