Questo è un po 'difficile da spiegare, ma ho intenzione di fare del mio meglio. Quello che ho adesso sono due tabelle che devo unire, ma non abbiamo un ID univoco univoco. Ho un paio di colonne su cui partecipare è il meglio che posso fare e voglio solo sapere quando non abbiamo numeri uguali su entrambi i lati dei join. In questo momento, se la tabella di destra ha 1 corrispondenza con le 2 voci sulla tabella di sinistra, quella corrispondenza 1 si unisce a entrambe le voci. Questo mi lascia non sapere che il tavolo giusto ha solo 1 ingresso contro il 2 per la sinistra.Panda si uniscono senza sostituzione
Quello che voglio è unire una tabella di destra a sinistra (esterno), ma non voglio unirmi alla tabella di destra più di una volta per ogni voce. Quindi, se l'indice della tabella di destra 3 potrebbe essere unito all'indice 1 e 2 sulla sinistra, voglio solo che venga unito nell'indice 1. Inoltre, se l'indice 3 e l'indice 4 potrebbero essere uniti sull'indice 1 e 2, voglio indicizzare 1 da abbinare con l'indice 3 e l'indice 2 da abbinare all'indice 4. Se c'è solo una corrispondenza (Indice 1 -> 3), ma l'Indice 2 sulla tabella di sinistra può essere abbinato all'indice 3, Voglio Indice 2 per non essere uniti.
esempi possono meglio descrivere questo:
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 questo esempio, voglio a_df ad unirsi su b_df. Voglio b_df uniq_id 3 da abbinare con a_df uniq_id 1, e b_df 4 a a_df 2.
uscita sarebbe simile a questa:
Out[106]:
match_id_right match_id uniq_id uniq_id_right
1 2 2 1 3
2 2 2 2 4
Ora diciamo che vogliamo unire a_df a c_df:
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 questo caso, abbiamo match_id di 2 su a_df e solo 1 match_id di 2 su c_df.
In questo caso voglio solo uniq_id 1 da abbinare con uniq_id 3, lasciando sia uniq_id 2 e 4 uniq_id di essere senza pari
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
Potrebbe per favore fornire il codice per questo esempio? –