Ich schrieb ursprünglich etwas Code in Python 2.7, aber jetzt wechselte ich zu Python 3.5. Ich möchte numerische Daten aus ein paar Spalten aggregieren und gruppieren nach dem Rest von ihnen oder mindestens einem.groupby python TypeError: unkorrigierbare Typen: tuple() <str()
Hier ist mein erster Datenrahmen "testdf":
testdf
PROD_TAG BRAND Market ('VAL', 'Per1') ('VAL', 'Per2')
P_1 A Modern Trade 4.3 0.155
P_2 A Traditional Trade 5.7 0
P_3 B Modern Trade 10.0 11.2
P_3 B Traditional Trade 8.7 6.3
P_4 C Modern Trade 12.1 12.3
P_5 D Modern Trade 8.0 7.0
letzte zwei Spaltenüberschriften Tupeln sind (dank Kapitän offensichtlich). Per1 und Per2 stehen für entsprechende Zeiträume. Jetzt
TypeError: unorderable types: tuple() < str()
:
Ich möchte eine einzige Zeile Code auszuführen, die auf Python zuvor arbeitete 2.7:
testdf=testdf.groupby(['BRAND'])[('VAL','P1'),('VAL','P2')].sum()
Es ist nicht wegen Tupel Art von Spaltenüberschriften funktioniert und wirft Wenn ich Spaltenüberschriften wie folgt umbenenne:
(Tupel entfernen) Ich werde in der Lage sein, die gleiche Codezeile mit neuen Spaltennamen:
testdf1=testdf.groupby(['BRAND'])['VAL-P1','VAL-P2'].sum()
und am Ende erhalten:
BRAND ('VAL', 'Per1') ('VAL', 'Per2')
A 10.0 0.155
B 18.7 17.5
C 12.1 12.3
D 8.0 7.0
meisten wierd, was hier das ist, wenn ich .mean()
statt .sum(), min() or .max()
verwenden, funktioniert alles einwandfrei, auch mit Tupeln.
Kann mir jemand erklären, wie kann ich solche Aggregationen mit Tupelspalten Namen arbeiten auf Python 3.5 machen?
Ich glaube, das eine sein kann, Fehler. –
Fast ein Jahr verging, ich vergaß dieses Problem und erinnerte mich kürzlich daran, es einfach gemacht zu haben, um dieses Buggy-Pandas-Problem zu beheben, indem ich auf GH-Probleme angesprochen habe. Aber bevor ich aufwuchs, wollte ich prüfen, ob es noch existiert. Und es zeigt sich, dass dieses Problem nicht mehr aktuell ist =) –