Danh sách tham gia bên trong python

Có một số cách để tham gia hoặc nối hai hoặc nhiều danh sách trong Python

Một trong những cách dễ nhất là sử dụng toán tử

>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
7

Thí dụ

Tham gia hai danh sách

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]

list3 = list1 + list2
print[list3]

Tự mình thử »

Một cách khác để nối hai danh sách là nối thêm tất cả các mục từ danh sách 2 vào danh sách 1, từng mục một

Thí dụ

Nối list2 vào list1

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]

cho x trong list2.
  danh sách1. nối thêm[x]

in [danh sách1]

Tự mình thử »

Hoặc bạn có thể sử dụng phương thức

>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
8, mục đích là thêm các phần tử từ danh sách này sang danh sách khác

Thí dụ

Sử dụng phương thức

>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
8 để thêm list2 vào cuối list1

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]

danh sách1. gia hạn[list2]
print[list1]

Tự mình thử »


Pandas có đầy đủ tính năng, hiệu suất cao trong hoạt động trong bộ nhớ tham gia rất giống với cơ sở dữ liệu quan hệ như SQL. Các phương pháp này thực hiện tốt hơn đáng kể so với các mã nguồn mở khác [như hợp nhất. dữ liệu. frame trong R]. Lý do của công việc này là thiết kế thuật toán cẩn thận và cách bố trí nội bộ của dữ liệu trong khung dữ liệu

Pandas cung cấp một hàm duy nhất cho tất cả các kiểu tham gia/hợp nhất. Cú pháp như sau

pd. hợp nhất[left, right, how='inner', on=None, left_on=None, right_on=None,

left_index=False, right_index=False, sort=True,

hậu tố=['_x', '_y'], copy=True, indicator=False]

bên trái

một khung dữ liệu đối tượng

bên phải

đối tượng khung dữ liệu khác

trên

tên các cột sẽ làm chìa khóa để tham gia với điều kiện mà các cột phải nằm trong cả hai DataFrame. Mặc định nó sẽ tự động nhận các cột có cùng tên làm phím để tham gia

bên trái

Use the column from left dataframe to make key for join. There could be the name or array has the length by length of dataframe

bên phải

Use the column from right dataframe  to make key for join. There could be the name or array has the length by length of dataframe

left_index

Nếu là True, sử dụng chỉ mục [nhãn hàng] left from dataframe as key to join. Trong giai điệu hợp nhất MultiIndex dataframe, key join xem xét cả cấp độ của chỉ mục

right_index

Nếu là True, hãy sử dụng chỉ mục [nhãn hàng] bên phải từ khung dữ liệu như là khóa để tham gia. Trong giai điệu hợp nhất MultiIndex dataframe, key join xem xét cả cấp độ của chỉ mục

thế nào

kiểu tham gia 'left', 'right', 'outer', 'inner'. Default is inner

loại

dataframe return has been sort by key or not

hậu tố

Một tuple of suffix of string sử dụng cho các cột lặp. Default is [_x, _y]

sao chép

Mặc định là Đúng, dữ liệu được xử lý trên khung dữ liệu đối tượng mới hay không

chỉ số

Thêm cột vào dataframe đầu ra được gọi là _merge với thông tin về nguồn của mỗi hàng. _merge là phần phân loại và lấy giá trị left_only cho các quan sát có khoá hợp nhất chỉ xuất hiện trong left dataframe, right_only cho các quan sát có key hợp nhất chỉ xuất hiện trong right dataframe và cả hai nếu key hợp nhất quan sát được tìm thấy trong cả hai

Giải thích 'làm thế nào. Nếu bạn đã quen với việc tham gia trong SQL thì bảng sau cho ta so sánh giữa việc tham gia trong pandas và SQL. Mọi người có thể tham khảo thêm sự so sánh này tại trang web

"thế nào"

Tương tự trong SQL

Giải thích

bên trái

TRÁI NGOÀI THAM GIA

Sử dụng các phím từ bảng bên trái

bên phải

RIGHT NGOÀI THAM GIA

Use the keys from the side table

bên ngoài

THAM GIA NGOÀI ĐẦY ĐỦ

Sử dụng các phím từ cả hai bảng

bên trong

THAM GIA BÊN TRONG

Sử dụng các phím chung giứa hai bảng

Chúng ta cùng đi vào ví dụ cụ thể sẽ dễ hiểu hơn

Ta có hai bảng dữ liệu bên trái, sau khi hợp nhất sẽ chọn bảng cuối cùng bên phải

>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>

Cấu hình cụ thể left, right as after and default how=”inner”

>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>

Kết quả cho phép tham gia với “how” = ‘left’

>>> pd.merge[left, right, how='left', on=['key1', 'key2']]

    A   B key1 key2    C    D

0  A0  B0   K0   K0   C0   D0

1  A1  B1   K0   K1  NaN  NaN

2  A2  B2   K1   K0   C1   D1

3  A2  B2   K1   K0   C2   D2

4  A3  B3   K2   K1  NaN  NaN

>>>

Giải thích về hậu tố. Ý nghĩa của hậu tố được giải thích qua ví dụ sau. Trường hợp hai bảng có tên cột giống nhau khi nối [chú ý tên cột giống nhau, không phải tên khóa giống nhau]. Hậu tố từ khóa sẽ giúp phân biệt các cột giống nhau đến từ bất kỳ khung dữ liệu nào bằng cách thêm hậu tố vào tên cột.

>>> pd.merge[left, right, on=[left.A,right.D], how='outer',suffixes=['_left','_right']]

    A   B key1_left key2_left   C   D key1_right key2_right

0  A0  B0        K0        K0  C0  D0         K0         K0

1  A1  B1        K0        K1  C1  D1         K1         K0

2  A2  B2        K1        K0  C2  D2         K1         K0

3  A3  B3        K2        K1  C3  D3         K2         K0

>>>

Giải thích về chỉ báo. Ý nghĩa của chỉ báo được giải thích thông qua ví dụ sau. You can so sánh với indicator=False và True qua hai đoạn mã bên dưới. Như vậy chỉ báo giúp chỉ rõ hàng đó đến từ khung dữ liệu nào.

>>> pd.merge[left, right, on=['key1','key2'], how='outer']

     A    B key1 key2    C    D

0   A0   B0   K0   K0   C0   D0

1   A1   B1   K0   K1  NaN  NaN

2   A2   B2   K1   K0   C1   D1

3   A2   B2   K1   K0   C2   D2

4   A3   B3   K2   K1  NaN  NaN

5  NaN  NaN   K2   K0   C3   D3

>>> pd.merge[left, right, on=['key1','key2'], how='outer',indicator =True]

     A    B key1 key2    C    D      _merge

0   A0   B0   K0   K0   C0   D0        both

1   A1   B1   K0   K1  NaN  NaN   left_only

2   A2   B2   K1   K0   C1   D1        both

3   A2   B2   K1   K0   C2   D2        both

4   A3   B3   K2   K1  NaN  NaN   left_only

5  NaN  NaN   K2   K0   C3   D3  right_only

>>>

Tham gia vào chỉ số

.join[] là một phương pháp thuận tiện để kết hợp các cột của hai dataframe được lập chỉ mục khác nhau có khả năng phân loại khác nhau vào một dataframe đơn. Đây là một ví dụ rất cơ bản:
>>> left = pd.DataFrame[{'A': ['A0', 'A1', 'A2'],'B': ['B0', 'B1', 'B2']},index=['K0', 'K1', 'K2']]
>>> right = pd.DataFrame[{'C': ['C0', 'C2', 'C3'],'D': ['D0', 'D2', 'D3']},index=['K0', 'K2', 'K3']]
>>> 
Hình dạng của left và right sẽ như sau:
>>> left
     A   B
K0  A0  B0
K1  A1  B1
K2  A2  B2
>>> right
     C   D
K0  C0  D0
K2  C2  D2
K3  C3  D3
>>> left.join[right]
     A   B    C    D
K0  A0  B0   C0   D0
K1  A1  B1  NaN  NaN
K2  A2  B2   C2   D2
>>>

With ví dụ về các lệnh tương đương sau khi sử dụng hợp nhất

>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
0______11
>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
2
>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
3
>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
4
>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
5

Shape of left and right will like after

>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
6

​​​​Ví dụ tiếp theo cho trường hợp multikey, được truyền đến dataframe có MultiIndex

>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
7

Kết quả được bao bọc trong hình sau

>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
8
>>> import pandas as pd

>>> import numpy as np

>>> left = pd.DataFrame[{'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']}]

>>> right = pd.DataFrame[{'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']}]

>>>
9
>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
0
>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
1

Kết quả

>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
2____23
>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
4

Ta sẽ chuyển về cho phép tham gia cơ bản trên khóa

>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
5

Move ba column “key”,’X’,’Y’ doing index through the method used set_index[]

>>> left

    A   B key1 key2

0  A0  B0   K0   K0

1  A1  B1   K0   K1

2  A2  B2   K1   K0

3  A3  B3   K2   K1

>>> right

    C   D key1 key2

0  C0  D0   K0   K0

1  C1  D1   K1   K0

2  C2  D2   K1   K0

3  C3  D3   K2   K0

>>> pd.merge[left, right, on=['key1', 'key2']]

    A   B key1 key2   C   D

0  A0  B0   K0   K0  C0  D0

1  A2  B2   K1   K0  C1  D1

2  A2  B2   K1   K0  C2  D2

>>>
6

Kết Luận

Ở đây, bạn đã học tất cả các cách thức hợp nhất các cấu trúc dữ liệu trong pandas. Bạn đã khám phá ra các kỹ thuật khác nhau để hợp nhất và tìm hiểu về các liên kết như bên trong, bên ngoài, bên phải, bên trái, tham gia, cũng như thời điểm để sử dụng qua hai phương thức chính là. join[] and pd. hợp nhất[]. Và bạn nên thực hiện nhiều hành động để có thể hiểu rõ hơn về các tham số như on, left_on, right_on, how, suffixes…

Chủ Đề