Ich habe folgende 2 Datenrahmen:Vergleichen zwei Gruppenergebnisse
DF1:
DATE ID_1 ID_2 RESULT
0 2014-06-16 1 a RED
1 2014-07-01 1 a WHITE
2 2014-08-16 2 c BLUE
3 2015-08-16 3 a RED
DF2
DATE ID_1 ID_2 RESULT
0 2014-06-16 1 z WHITE
1 2014-07-01 1 z WHITE
2 2014-08-16 2 h BLUE
3 2014-08-16 3 k RED
Dass Sie, indem Sie diese erhalten können:
df1 = pd.DataFrame(columns=["DATE","ID_1", "ID_2", "RESULT" ])
df2 = pd.DataFrame(columns=["DATE","ID_1", "ID_2","RESULT"])
df1["DATE"] = ['2014-06-16', '2014-07-01', '2014-08-16', '2015-08-16']
df1['ID_1'] = [1,1,2,3]
df1['ID_2'] = ['a', 'a', 'c', 'a']
df1['RESULT'] = ['RED', 'WHITE', 'BLUE', 'RED']
df2["DATE"] = ['2014-06-16', '2014-07-01', '2014-08-16' , '2014-08-16']
df2['ID_1'] = [1,1,2,3]
df2['ID_2'] = ['z', 'z', 'h', 'k']
df2['RESULT'] = ['WHITE', 'WHITE', 'BLUE', 'RED']
Jetzt brauche ich „ID_1“ auf beide und vergleichen, wenn alle GROUPBY Spalten (außer ID_2) sind gleich. Im Idealfall durch die Unterschiede zeigt
Das Ergebnis sollte so sein:
DATE ID_1 ID_2x ID2y RESULTx RESULTy
2014-06-16 1 z a WHITE RED
ich durch die Gruppierung wie folgt versucht:
grp1 = df1.groupby("ID_1")
grp2 = df2.groupby("ID_1")
for (g1,g2) in zip(grp1,grp2):
g1[1][["DATE", "RESULT"]] != g2[1][["DATE", "RESULT"]]
Aber ich glaube nicht effizient ist. Außerdem erhalte ich einen Vergleichsfehler:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
Irgendeine Idee darüber, wie man vorgeht?
Danke!
'df1' und' df2' haben keine 'ID_2'-Werte gemeinsam. Wenn sie nicht genau die gleiche Liste eindeutiger 'ID_2'-Werte haben, ist das Iterieren durch Zippen der Gruppen eine schlechte Idee. Und selbst dann wird der Vergleich der Gruppen schwierig, da sie wahrscheinlich unterschiedlich lang sind. – IanS
Wenn Sie sagen "Das Ergebnis sollte wie sein" meinen Sie, dass der folgende Code eine Zeile des beabsichtigten Ergebnisses oder das gesamte beabsichtigte Ergebnis zeigt? Es ist nicht genau klar, was das Ergebnis des Vergleichs sein soll. Unter welchen Bedingungen sollte eine bestimmte Zeile in der Ausgabe enthalten sein? – ASGM
Sie haben recht, es ist ein Tippfehler, nur behoben. Ich meine Gruppierung nach ID_1. – user2320577