Mam dwa dataframes z następującymi nazwami kolumn:

frame_1:
event_id, date, time, county_ID

frame_2:
countyid, state

Chciałbym uzyskać dataframe z następującymi kolumnami, łącząc (po lewej) na county_ID = countyid:

joined_dataframe
event_id, date, time, county, state

Nie mogę dowiedzieć się, jak to zrobić, jeśli kolumny, na których chcę dołączyć, nie są indeksem. Co jest najłatwiejszy? Dzięki!

106
Alexis Eggermont 4 grudzień 2013, 16:35

2 odpowiedzi

Najlepsza odpowiedź

Możesz użyć opcji Left_on i Right_on w następujący sposób:

pd.merge(frame_1, frame_2, left_on='county_ID', right_on='countyid')

Nie jestem pewien z pytania, jeśli chciałeś się połączyć, jeśli klucz był w lewej dataframe. Jeśli tak jest, wtedy to zrobi to (powyższe wchodzi w życie wykonać wiele do wielu scalonych)

pd.merge(frame_1, frame_2, how='left', left_on='county_ID', right_on='countyid')
144
Simon 6 marzec 2019, 11:07

Musisz zrobić county_ID jako indeks właściwej ramy:

frame_2.join ( frame_1.set_index( [ 'county_ID' ], verify_integrity=True ),
               on=[ 'countyid' ], how='left' )

W przypadku Twoich informacji, w Pandas w lewo włączyć przerwy, gdy prawa ramka ma nieustanne wartości w kolumnie łączącej. Zobacz to Bug.

Musisz więc weryfikować integralność przed dołączeniem przez , verify_integrity=True

3
behzad.nouri 4 grudzień 2013, 12:47