Czy można scalić tylko niektóre kolumny? Mam DataFrame df1 z kolumnami x, y, z i df2 z kolumnami x, a, b, c, d, e, f itd.
Chcę połączyć dwie ramki DataFrame na x, ale chcę tylko scalić kolumny df2.a, df2.b - a nie całą ramkę DataFrame.
Wynik byłby DataFrame z x, y, z, a, b.
Mógłbym scalić, a następnie usunąć niechciane kolumny, ale wydaje się, że istnieje lepsza metoda.
Odpowiedzi:
Możesz scalić podrzędną ramkę danych (tylko z tymi kolumnami):
źródło
list('xab')
pobiera każdy element (literę) ciągu „xab” i konwertuje go na element listy, więclist('xab')
zwraca['x', 'a', 'b']
. To działa, jeśli każda kolumna ma jedną literę jako nazwę. W twoim przypadku myślę, że musisz zrobić df1.merge (df2 ['Unique_External_Users'], * other_arguments). ... Najprawdopodobniej już to rozwiązałeś, zostawiając to dla początkujących w pobliżu, takich jak jaChcesz użyć DWÓCH nawiasów, więc jeśli wykonujesz akcję typu WYSZUKAJ.PIONOWO:
To da ci wszystko w oryginalnym df + dodaj tę jedną odpowiednią kolumnę w df2, którą chcesz dołączyć.
źródło
Jeśli chcesz usunąć kolumny z docelowej ramki danych, ale kolumny są wymagane do łączenia, możesz wykonać następujące czynności:
.drop('key1')
Część zapobiega „klucz1” z utrzymywane w otrzymanej ramki danych, mimo że jest wymagane, aby połączyć się w pierwszym miejscu.źródło
KeyError: "['key1'] not found in axis"
Możesz użyć
.loc
aby wybrać określone kolumny ze wszystkimi wierszami, a następnie wyciągnąć to. Przykład poniżej:W tym przykładzie scalasz dataframe1 i dataframe2. Zdecydowałeś się wykonać zewnętrzne złączenie lewe na „kluczu”. Jednak dla dataframe2 określono,
.iloc
co pozwala określić żądane wiersze i kolumny w formacie liczbowym. Używając:
, zaznaczasz wszystkie wiersze, ale[0:5]
zaznaczasz pierwsze 5 kolumn. Możesz użyć,.loc
aby określić według nazwy, ale jeśli masz do czynienia z długimi nazwami kolumn,.iloc
może być lepiej.źródło
.loc
utworzy kopię , a na dużym df może to być bolesne. Lepszym rozwiązaniem może być scalenie, a następnie natychmiastowe pobranie wycinka kolumny w tym samym wyrażeniu.Ma to na celu scalenie wybranych kolumn z dwóch tabel.
Jeśli
table_1
zawierat1_a,t1_b,t1_c..,id,..t1_z
kolumny itable_2
zawierat2_a, t2_b, t2_c..., id,..t2_z
kolumny, aw ostatecznej tabeli wymagane są tylko t1_a, id, t2_a, toźródło