Bu biraz açıklamak zor ama elimden geleni yapacağım. Şu anda sahip olduğum şey bir araya gelmem gereken iki tablo, ama gerçekten benzersiz bir katılma kimliğine sahip değiliz. Yapabileceğim en iyi iki sütun var. Yapabileceğim en iyi şey, ve sadece birleşimin her iki tarafında eşit sayıya sahip olmadığımızı bilmek istiyorum. Şu anda, eğer sağ tablonun sol tablodaki 2 girdiyle 1 eşleşmesi varsa, o 1 maçı her iki girişe de katılır. Bu bana doğru tabloyu bilmeme neden oluyor, sadece solda 2'ye karşı 1 giriş var.Pandalar değiştirilmeden birleştirir
İstediğim şey sağdaki tabloyu sola (dış) birleştirmek ama sağdaki tabloya giriş başına birden çok kez katılmak istemiyorum. Yani eğer sağdaki tablo indeksi 3, sol taraftaki indeks 1 ve 2'de birleştirilebilseydi, sadece indeks 1'de birleştirilmesini istiyorum. Ayrıca, endeks 3 ve dizin 4, indeks 1 ve 2'de birleştirilebilirse, indeksi istiyorum 1 endeksi 3 ile eşleşecek ve dizin 2 ile eşleştirilecek dizin 2. Eğer sadece 1 eşleşme varsa (Index 1 -> 3), ancak sol tablodaki Index 2 indeksi 3 ile eşleştirilebilir, Index istiyorum 2 katılmamak için. Bunu en iyi tarif edebilir
Örnekler: Bu örnekte
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
, ben a_df b_df üzerine katılmak istiyorum. Şimdi
Out[106]:
match_id_right match_id uniq_id uniq_id_right
1 2 2 1 3
2 2 2 2 4
en biz c_df için a_df katılmak istiyorum diyelim: Ben şu şekilde görünecektir 3 uniq_id a_df 2.
Çıktı a_df uniq_id 1 ve b_df 4 ile eşleştirilecek b_df istiyorum
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
Bu durumda, a_df'de 2'nin match_id'leri ve c_df'de 2'si sadece 1 eşleşme_dizimiz var. Bu durumda
Sadecematch_id_right match_id uniq_id uniq_id_right
1 2 2 1 3
2 NaN 2 2 NaN
4 3 NaN NaN 4
Bu örnek için kodu verir misiniz? –