Das ist ein bisschen schwer zu erklären, aber ich werde mein Bestes versuchen. Was ich gerade habe, sind zwei Tabellen, die ich zusammenfügen muss, aber wir haben keine eindeutige Join-ID. Ich habe ein paar Spalten, denen ich beitreten kann. Das ist das Beste, was ich tun kann, und ich möchte nur wissen, wann wir nicht die gleichen Zahlen auf beiden Seiten der Joins haben. Wenn jetzt die rechte Tabelle 1 Übereinstimmung mit den 2 Einträgen in der linken Tabelle hat, dann stimmt diese 1 Übereinstimmung mit beiden Einträgen überein. Das lässt mich nicht wissen, dass der richtige Tisch nur 1 Eintrag hat, während der 2 für den linken.Pandas beitreten ohne Ersatz
Was ich möchte ist eine rechte Tabelle zu einer linken (äußeren), aber ich möchte nicht die richtige Tabelle mehr als einmal pro Eintrag. Also, wenn der rechte Tabellenindex 3 auf Index 1 und 2 auf der linken Seite verbunden werden könnte, möchte ich nur, dass er auf Index 1 zusammengefügt wird. Wenn Index 3 und Index 4 auch auf Index 1 und 2 verbunden werden könnten, möchte ich index 1 wird mit Index 3 und Index 2 mit Index 4 abgeglichen. Wenn es nur 1 Übereinstimmung (Index 1 -> 3) gibt, aber Index 2 auf der linken Tabelle mit Index 3 übereinstimmen könnte, möchte ich Index 2 nicht verbunden sein. kann diese
Beispiele am besten beschreiben:
a_df = pd.DataFrame.from_dict({1: {'match_id': 2, 'uniq_id': 1}, 2: {'match_id': 2, 'uniq_id': 2}}, orient='index')
In [99]: a_df
Out[99]:
match_id uniq_id
1 2 1
2 2 2
In [100]: b_df = pd.DataFrame.from_dict({3: {'match_id': 2, 'uniq_id': 3}, 4: {'match_id': 2, 'uniq_id': 4}}, orient='index')
In [101]: b_df
Out[101]:
match_id uniq_id
3 2 3
4 2 4
In diesem Beispiel möchte ich a_df auf b_df beizutreten. Ich möchte b_df 3 uniq_id mit a_df uniq_id 1 und b_df 4 bis a_df 2.
Output abgestimmt werden würde wie folgt aussehen:
Out[106]:
match_id_right match_id uniq_id uniq_id_right
1 2 2 1 3
2 2 2 2 4
Lassen Sie uns jetzt sagen, dass wir a_df zu c_df anschließen möchten:
In [104]: c_df = pd.DataFrame.from_dict({3: {'match_id': 2, 'uniq_id': 3}, 4: {'match_id': 3, 'uniq_id': 4}}, orient='index')
In [105]: c_df
Out[105]:
match_id uniq_id
3 2 3
4 3 4
In diesem Fall haben wir match_ids von 2 auf a_df und nur 1 match_id von 2 auf c_df.
In diesem Fall möchte ich nur uniq_id 1 mit uniq_id 3 angepasst werden, sowohl uniq_id 2 und uniq_id 4 verlassen unerreichte
match_id_right match_id uniq_id uniq_id_right
1 2 2 1 3
2 NaN 2 2 NaN
4 3 NaN NaN 4
Könnten Sie bitte den Code für dieses Beispiel angeben? –