Angenommen, ich habe zwei Datenrahmen wie so:Pandas - Kreuzung von zwei Datenrahmen basierend auf Spalteneinträge
>>dfA
S T prob
0 ! ! ! ! ! ! ! 8.1623999e-05
1 ! ! ! ! ! ! " 0.00354090007
2 ! ! ! ! ! ! . 0.00210241997
3 ! ! ! ! ! ! ? 6.55684998e-05
4 ! ! ! ! ! ! 0.203119993
5 ! ! ! ! ! ! ” 6.62070015e-05
6 ! ! ! ! ! 0.00481862016
7 ! ! ! ! 0.0274260994
8 ! ! ! " ! ! ! 7.99940026e-05
9 ! ! ! " ! 1.51188997e-05
10 ! ! ! " 8.50678989e-05
>>dfB
S T knstats
0 ! ! ! ! ! ! ! knstats=2,391,104,64,25
1 ! ! ! ! ! ! " knstats=4,391,6,64,2
2 ! ! ! ! ! ! . knstats=4,391,5,64,2
3 ! ! ! ! ! ! ? knstats=1,391,4,64,4
4 ! ! ! ! ! ! knstats=220,391,303,64,55
5 ! ! ! ! ! knstats=16,391,957,64,115
6 ! ! ! ! knstats=28,391,5659,64,932
7 ! ! ! " ! ! ! knstats=2,391,2,64,1
8 ! ! ! " ! knstats=1,391,37,64,13
9 ! ! ! " knstats=2,391,1.11721e+06,64,180642
10 ! ! ! . " knstats=2,391,120527,64,20368
Ich mag einen neuen Datenrahmen zu schaffen, die aus den Reihen zusammengesetzt ist, die übereinstimmenden „S“ und " T "Einträge in beiden Matrizen, zusammen mit der Prob-Spalte von dfA und der Knstats-Spalte von dfB. Das Ergebnis sollte in etwa wie folgt aussehen, und es ist wichtig, dass die Reihenfolge der gleiche ist:
S T prob knstats
0 ! ! ! ! ! ! ! 8.1623999e-05 knstats=2,391,104,64,25
1 ! ! ! ! ! ! " 0.00354090007 knstats=4,391,6,64,2
2 ! ! ! ! ! ! . 0.00210241997 knstats=4,391,5,64,2
3 ! ! ! ! ! ! ? 6.55684998e-05 knstats=1,391,4,64,4
4 ! ! ! ! ! ! 0.203119993 knstats=220,391,303,64,55
5 ! ! ! ! ! 0.00481862016 knstats=16,391,957,64,115
6 ! ! ! ! 0.0274260994 knstats=28,391,5659,64,932
7 ! ! ! " ! ! ! 7.99940026e-05 knstats=2,391,2,64,1
8 ! ! ! " ! 1.51188997e-05 knstats=1,391,37,64,13
9 ! ! ! " 8.50678989e-05 knstats=2,391,1.11721e+06,64,180642
Ich bin nicht daran interessiert, sie einfach zu verschmelzen, sondern die Kreuzung zu nehmen. Das heißt, wenn es eine Zeile gibt, in der 'S' und 'T' nicht sowohl prob als auch knstats haben, möchte ich diese Zeile loswerden. Sie werden feststellen, dass dfA und dfB nicht genau übereinstimmen. Dies scheint jedoch ein guter erster Schritt zu sein. Wie kann ich die Zeilen mit NaN-Werten in prob oder knstats in der Ausgabematrix beschneiden? – Bib
Geändert zu how = 'inner', das berechnet die Schnittmenge basierend auf 'S' und 'T' – user308827
Sie können dropna auch benutzen, um Reihen mit irgendwelchen NaNs fallenzulassen. Bearbeitete meine Antwort – user308827