Ich habe 2 Datenrahmen, beide haben eine Schlüsselspalte, die Duplikate haben könnte, aber die Datenrahmen haben meist die gleichen duplizierten Schlüssel. Ich möchte diese Datenrahmen für diesen Schlüssel zusammenführen, aber so, dass beide Duplikate zusammengeführt werden, wenn beide dasselbe Duplikat haben. Wenn ein Datenrahmen mehr Duplikate eines Schlüssels hat als der andere, möchte ich, dass seine Werte als NaN gefüllt werden. Zum Beispiel:Merge Pandas Datenrahmen mit Schlüssel Duplikate
df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K2', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']},
columns=['key', 'A'])
df2 = pd.DataFrame({'B': ['B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6'],
'key': ['K0', 'K1', 'K2', 'K2', 'K3', 'K3', 'K4']},
columns=['key', 'B'])
key A
0 K0 A0
1 K1 A1
2 K2 A2
3 K2 A3
4 K2 A4
5 K3 A5
key B
0 K0 B0
1 K1 B1
2 K2 B2
3 K2 B3
4 K3 B4
5 K3 B5
6 K4 B6
Ich versuche, die folgende Ausgabe
key A B
0 K0 A0 B0
1 K1 A1 B1
2 K2 A2 B2
3 K2 A3 B3
6 K2 A4 NaN
8 K3 A5 B4
9 K3 NaN B5
10 K4 NaN B6
Also im Grunde zu bekommen, Ich mag würde den duplizierten K2 Schlüssel als K2_1, K2_2 zu behandeln, ... und dann tun Das How = 'Outer' verschmelzen auf den Datenrahmen. Irgendwelche Ideen, wie ich das erreichen kann?
Gibt es eine Möglichkeit, dies schneller zu machen? Ich arbeite mit Datenrahmen mit ungefähr 4 Millionen Einträgen und während die Zusammenführung im Prinzip sofort erfolgt, dauert der Aufruf von cumcount() ungefähr eine Minute. – dcmm88
@ dcmm88 Ich schrieb diese Funktion speziell. überprüfen Sie, ob es die Situation nicht verbessert. – piRSquared
Die '' 'np.arange ... == inv''' Zeile, du wolltest dort np.equal verwenden? Denn zumindest für mich ist das Ergebnis von '==' ein Bool. Selbst wenn ich np.equal verwende, erhalte ich einen Speicherfehler, vielleicht sind meine Datenrahmen zu groß? – dcmm88