Hướng dẫn how does the merge function work in python? - hàm hợp nhất hoạt động như thế nào trong python?

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: kết hợp dữ liệu trong gấu trúc với concat () và merge () This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Combining Data in pandas With concat() and merge()

Show

Các đối tượng

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
2 và
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 trong gấu trúc là những công cụ mạnh mẽ để khám phá và phân tích dữ liệu. Một phần sức mạnh của họ đến từ một cách tiếp cận nhiều mặt để kết hợp các bộ dữ liệu riêng biệt. Với gấu trúc, bạn có thể hợp nhất, tham gia và nối các bộ dữ liệu của bạn, cho phép bạn thống nhất và hiểu rõ hơn về dữ liệu của bạn khi bạn phân tích nó.merge, join, and concatenate your datasets, allowing you to unify and better understand your data as you analyze it.

Trong hướng dẫn này, bạn sẽ học cách và thời điểm kết hợp dữ liệu của bạn trong gấu trúc với:

  • >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    4 để kết hợp dữ liệu trên các cột hoặc chỉ số chung
    for combining data on common columns or indices
  • >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    5 để kết hợp dữ liệu trên cột khóa hoặc chỉ mục
    for combining data on a key column or an index
  • >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    6 để kết hợp các khung dữ liệu trên các hàng hoặc cột
    for combining DataFrames across rows or columns

Nếu bạn có một số kinh nghiệm sử dụng các đối tượng

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 và
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
2 trong gấu trúc và bạn đã sẵn sàng để học cách kết hợp chúng, thì hướng dẫn này sẽ giúp bạn làm chính xác điều đó. Nếu bạn cảm thấy hơi gỉ, thì bạn có thể xem một sự bồi dưỡng nhanh trên DataFrames trước khi tiến hành.

Bạn có thể làm theo cùng với các ví dụ trong hướng dẫn này bằng cách sử dụng các tệp dữ liệu và máy tính xách tay Jupyter tương tác có sẵn tại liên kết bên dưới:

Pandas >>> climate_temp.shape (127020, 21) >>> climate_precip.shape (151110, 29) 4: Kết hợp dữ liệu trên các cột hoặc chỉ số chung

Kỹ thuật đầu tiên mà bạn sẽ học là

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4. Bạn có thể sử dụng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 Bất cứ khi nào bạn muốn chức năng tương tự như các hoạt động tham gia cơ sở dữ liệu. Nó linh hoạt nhất trong ba hoạt động mà bạn sẽ học được.

Khi bạn muốn kết hợp các đối tượng dữ liệu dựa trên một hoặc nhiều khóa, tương tự như những gì bạn đã làm trong cơ sở dữ liệu quan hệ,

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 là công cụ bạn cần. Cụ thể hơn,
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 là hữu ích nhất khi bạn muốn kết hợp các hàng chia sẻ dữ liệu.

Bạn có thể đạt được cả hai và nhiều người tham gia với

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4. Trong một lần tham gia nhiều-một, một trong những bộ dữ liệu của bạn sẽ có nhiều hàng trong cột hợp nhất lặp lại cùng một giá trị. Ví dụ, các giá trị có thể là 1, 1, 3, 5 và 5. Đồng thời, cột hợp nhất trong bộ dữ liệu khác won won có các giá trị lặp lại. Lấy 1, 3 và 5 làm ví dụ.many-to-one and many-to-many joins with
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4. In a many-to-one join, one of your datasets will have many rows in the merge column that repeat the same values. For example, the values could be 1, 1, 3, 5, and 5. At the same time, the merge column in the other dataset won’t have repeated values. Take 1, 3, and 5 as an example.

Như bạn có thể đoán, trong một tham gia nhiều-nhiều, cả hai cột hợp nhất của bạn sẽ có các giá trị lặp đi lặp lại. Những sáp nhập này phức tạp hơn và dẫn đến sản phẩm Cartesian của các hàng đã tham gia.

Điều này có nghĩa là, sau khi hợp nhất, bạn sẽ có mọi kết hợp các hàng có cùng giá trị trong cột chính. Bạn sẽ thấy điều này trong hành động trong các ví dụ dưới đây.

Điều làm cho

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 rất linh hoạt là số lượng tùy chọn tuyệt đối để xác định hành vi hợp nhất của bạn. Mặc dù danh sách có vẻ khó khăn, nhưng với thực tế, bạn sẽ có thể hợp nhất các bộ dữ liệu thuộc mọi loại.

Khi bạn sử dụng

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4, bạn sẽ cung cấp hai đối số bắt buộc:

  1. DataFrame
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    7
  2. DataFrame
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    8

Sau đó, bạn có thể cung cấp một số đối số tùy chọn để xác định cách các bộ dữ liệu của bạn được hợp nhất:

  • >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    9 Xác định loại hợp nhất để thực hiện. Nó mặc định là
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    0, nhưng các tùy chọn có thể khác bao gồm
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    1,
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    2 và
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    3.
    defines what kind of merge to make. It defaults to
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    0, but other possible options include
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    1,
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    2, and
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    3.

  • >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    4 cho biết
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    4 cột hoặc chỉ số nào, còn được gọi là các cột chính hoặc chỉ số chính, bạn muốn tham gia. Đây là tùy chọn. Nếu nó được chỉ định và
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    6 và
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    7 (được đề cập bên dưới) là
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8, thì các cột từ hai khung dữ liệu chia sẻ tên sẽ được sử dụng làm khóa tham gia. Nếu bạn sử dụng
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    4, thì cột hoặc chỉ mục mà bạn chỉ định phải có trong cả hai đối tượng.
    tells
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    4 which columns or indices, also called key columns or key indices, you want to join on. This is optional. If it isn’t specified, and
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    6 and
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    7 (covered below) are
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8, then columns from the two DataFrames that share names will be used as join keys. If you use
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    4, then the column or index that you specify must be present in both objects.

  • >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    0 và
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    1 Chỉ định một cột hoặc chỉ mục mà chỉ có trong đối tượng
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    7 hoặc
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    8 mà bạn đang hợp nhất. Cả hai mặc định là
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    4.
    and
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    1
    specify a column or index that’s present only in the
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    7 or
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    8 object that you’re merging. Both default to
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    4.

  • >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    6 và
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    7 đều mặc định là
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8, nhưng nếu bạn muốn sử dụng chỉ mục của đối tượng bên trái hoặc bên phải để được hợp nhất, thì bạn có thể đặt đối số có liên quan thành
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    8.
    and
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    7
    both default to
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8, but if you want to use the index of the left or right object to be merged, then you can set the relevant argument to
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    8.

  • >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    9 là một bộ chuỗi để nối vào các tên cột giống hệt nhau mà các phím hợp nhất. Điều này cho phép bạn theo dõi nguồn gốc của các cột có cùng tên. is a tuple of strings to append to identical column names that aren’t merge keys. This allows you to keep track of the origins of columns with the same name.

Đây là một số tham số quan trọng nhất để chuyển sang

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4. Để biết danh sách đầy đủ, xem tài liệu Pandas.

Cách sử dụng >>> climate_temp.shape (127020, 21) >>> climate_precip.shape (151110, 29) 4

Trước khi đi sâu vào các chi tiết về cách sử dụng

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4, trước tiên bạn nên hiểu các hình thức tham gia khác nhau:

  • >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    3
  • >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    4
  • >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    7
  • >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    8

Bạn có thể tìm hiểu về các kết nối khác nhau này một cách chi tiết dưới đây, nhưng trước tiên hãy xem đại diện trực quan này của họ:

Hướng dẫn how does the merge function work in python? - hàm hợp nhất hoạt động như thế nào trong python?
Đại diện trực quan của các loại tham gia

Trong hình ảnh này, hai vòng tròn là hai bộ dữ liệu của bạn và các nhãn chỉ vào phần hoặc phần của bộ dữ liệu bạn có thể mong đợi. Mặc dù sơ đồ này không bao gồm tất cả các sắc thái, nhưng nó có thể là một hướng dẫn tiện dụng cho người học trực quan.

Nếu bạn có nền SQL, thì bạn có thể nhận ra tên hoạt động hợp nhất từ ​​cú pháp

>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
7. Ngoại trừ
>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
3, tất cả các kỹ thuật này là các loại tham gia bên ngoài. Với các kết nối bên ngoài, bạn sẽ hợp nhất dữ liệu của mình dựa trên tất cả các khóa trong đối tượng bên trái, đối tượng bên phải hoặc cả hai. Đối với các khóa chỉ tồn tại trong một đối tượng, các cột chưa từng có trong đối tượng khác sẽ được điền vào
>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
9, viết tắt của không phải là một số.outer joins. With outer joins, you’ll merge your data based on all the keys in the left object, the right object, or both. For keys that only exist in one object, unmatched columns in the other object will be filled in with
>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
9, which stands for Not a Number.

Bạn cũng có thể thấy một lời giải thích trực quan về các liên kết khác nhau trong bối cảnh SQL về kinh dị mã hóa. Bây giờ hãy xem các tham gia khác nhau trong hành động.

Ví dụ

Nhiều hướng dẫn của gấu trúc cung cấp các khung dữ liệu rất đơn giản để minh họa các khái niệm mà họ đang cố gắng giải thích. Cách tiếp cận này có thể gây nhầm lẫn vì bạn có thể liên hệ dữ liệu với bất cứ điều gì cụ thể. Vì vậy, đối với hướng dẫn này, bạn sẽ sử dụng hai bộ dữ liệu trong thế giới thực làm các khung dữ liệu được hợp nhất:

  1. Quy định khí hậu cho California (nhiệt độ)
  2. Quy định khí hậu cho California (lượng mưa)

Bạn có thể khám phá các bộ dữ liệu này và theo dõi cùng với các ví dụ bên dưới bằng cách sử dụng máy tính xách tay Jupyter tương tác và dữ liệu khí hậu CSVS:

Nếu bạn muốn tìm hiểu cách sử dụng máy tính xách tay Jupyter, thì hãy xem Jupyter Notebook: Giới thiệu.

Hai bộ dữ liệu này là từ Cơ quan Khí quyển và Đại dương Quốc gia (NOAA) và được lấy từ kho lưu trữ dữ liệu công cộng NOAA. Đầu tiên, tải các bộ dữ liệu vào các khung dữ liệu riêng biệt:

>>>

>>> import pandas as pd
>>> climate_temp = pd.read_csv("climate_temp.csv")
>>> climate_precip = pd.read_csv("climate_precip.csv")

Trong mã trên, bạn đã sử dụng gấu trúc

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
0 để tải các tệp CSV nguồn của bạn vào các đối tượng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 một cách thuận tiện. Sau đó, bạn có thể nhìn vào các tiêu đề và một vài hàng đầu tiên của các khung dữ liệu được tải với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2:

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0

Trong mã trên, bạn đã sử dụng gấu trúc

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
0 để tải các tệp CSV nguồn của bạn vào các đối tượng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 một cách thuận tiện. Sau đó, bạn có thể nhìn vào các tiêu đề và một vài hàng đầu tiên của các khung dữ liệu được tải với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2:

Tại đây, bạn đã sử dụng

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2 để có được năm hàng đầu tiên của mỗi DataFrame. Đảm bảo tự mình thử điều này, với máy tính xách tay Jupyter tương tác hoặc trong bảng điều khiển của bạn, để bạn có thể khám phá dữ liệu ở độ sâu lớn hơn.

>>>

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)

Trong mã trên, bạn đã sử dụng gấu trúc

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
0 để tải các tệp CSV nguồn của bạn vào các đối tượng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 một cách thuận tiện. Sau đó, bạn có thể nhìn vào các tiêu đề và một vài hàng đầu tiên của các khung dữ liệu được tải với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2:

Tại đây, bạn đã sử dụng
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2 để có được năm hàng đầu tiên của mỗi DataFrame. Đảm bảo tự mình thử điều này, với máy tính xách tay Jupyter tương tác hoặc trong bảng điều khiển của bạn, để bạn có thể khám phá dữ liệu ở độ sâu lớn hơn.

Tiếp theo, hãy xem nhanh các kích thước của hai DataFrames:key column.

Lưu ý rằng

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
4 là thuộc tính của các đối tượng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 cho bạn biết kích thước của DataFrame. Đối với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
6, đầu ra của
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
4 nói rằng DataFrame có 127.020 hàng và 21 cột.

>>>

>>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
>>> precip_one_station.head()
                STATION  ... DLY-SNOW-PCTALL-GE050TI
1460  GHCND:USC00045721  ...                   -9999
1461  GHCND:USC00045721  ...                   -9999
1462  GHCND:USC00045721  ...                   -9999
1463  GHCND:USC00045721  ...                   -9999
1464  GHCND:USC00045721  ...                   -9999

Trong mã trên, bạn đã sử dụng gấu trúc

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
0 để tải các tệp CSV nguồn của bạn vào các đối tượng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 một cách thuận tiện. Sau đó, bạn có thể nhìn vào các tiêu đề và một vài hàng đầu tiên của các khung dữ liệu được tải với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2:

Tại đây, bạn đã sử dụng

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2 để có được năm hàng đầu tiên của mỗi DataFrame. Đảm bảo tự mình thử điều này, với máy tính xách tay Jupyter tương tác hoặc trong bảng điều khiển của bạn, để bạn có thể khám phá dữ liệu ở độ sâu lớn hơn.

>>>

>>> inner_merged = pd.merge(precip_one_station, climate_temp)
>>> inner_merged.head()
             STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19

>>> inner_merged.shape
(365, 47)

Trong mã trên, bạn đã sử dụng gấu trúc

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
0 để tải các tệp CSV nguồn của bạn vào các đối tượng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 một cách thuận tiện. Sau đó, bạn có thể nhìn vào các tiêu đề và một vài hàng đầu tiên của các khung dữ liệu được tải với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2:

Tại đây, bạn đã sử dụng

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2 để có được năm hàng đầu tiên của mỗi DataFrame. Đảm bảo tự mình thử điều này, với máy tính xách tay Jupyter tương tác hoặc trong bảng điều khiển của bạn, để bạn có thể khám phá dữ liệu ở độ sâu lớn hơn.

>>>

>>> inner_merged_total = pd.merge(
...     climate_temp, climate_precip, on=["STATION", "DATE"]
... )
>>> inner_merged_total.shape
(123005, 48)

Trong mã trên, bạn đã sử dụng gấu trúc

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
0 để tải các tệp CSV nguồn của bạn vào các đối tượng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 một cách thuận tiện. Sau đó, bạn có thể nhìn vào các tiêu đề và một vài hàng đầu tiên của các khung dữ liệu được tải với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2:

Tại đây, bạn đã sử dụng

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
2 để có được năm hàng đầu tiên của mỗi DataFrame. Đảm bảo tự mình thử điều này, với máy tính xách tay Jupyter tương tác hoặc trong bảng điều khiển của bạn, để bạn có thể khám phá dữ liệu ở độ sâu lớn hơn.

Tiếp theo, hãy xem nhanh các kích thước của hai DataFrames:

Lưu ý rằng

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
4 là thuộc tính của các đối tượng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
3 cho bạn biết kích thước của DataFrame. Đối với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
6, đầu ra của
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
4 nói rằng DataFrame có 127.020 hàng và 21 cột.

Tham gia bên trong

Trong ví dụ này, bạn sẽ sử dụng

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 với các đối số mặc định của nó, điều này sẽ dẫn đến sự tham gia bên trong. Hãy nhớ rằng trong một tham gia bên trong, bạn sẽ mất các hàng mà don có một trận đấu trong cột khóa DataFrame khác.full outer join—all rows from both DataFrames will be present in the new DataFrame.

Nếu một hàng không có một trận đấu trong khung dữ liệu khác dựa trên (các) cột chính, thì bạn đã giành được hàng mất hàng như bạn sẽ tham gia bên trong. Thay vào đó, hàng sẽ nằm trong DataFrame được hợp nhất, với các giá trị

>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
9 được điền vào khi thích hợp.

Điều này được minh họa rõ nhất trong một ví dụ:

>>>

>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)

Nếu bạn nhớ từ khi bạn kiểm tra thuộc tính

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
4 của
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
6, thì bạn sẽ thấy số lượng hàng trong
>>> right_merged = pd.merge(
...     precip_one_station, climate_temp, how="right", on=["STATION", "DATE"]
... )
>>> right_merged.shape
(127020, 48)
9 là như nhau. Với sự tham gia bên ngoài, bạn có thể mong đợi có cùng số lượng hàng với DataFrame lớn hơn. Đó là vì không có hàng nào bị mất ở một tham gia bên ngoài, ngay cả khi họ không có một trận đấu trong khung dữ liệu khác.

Chỗ nối bên trái

Trong ví dụ này, bạn sẽ chỉ định một tham gia bên trái, còn được gọi là tham gia bên ngoài bên trái với tham số ____39. Sử dụng tham gia bên ngoài bên trái sẽ để lại DataFrame được hợp nhất mới của bạn với tất cả các hàng từ DataFrame bên trái, trong khi loại bỏ các hàng khỏi khung dữ liệu bên phải mà don có một khớp trong cột chính của DataFrame bên trái.left outer join—with the

>>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
>>> precip_one_station.head()
                STATION  ... DLY-SNOW-PCTALL-GE050TI
1460  GHCND:USC00045721  ...                   -9999
1461  GHCND:USC00045721  ...                   -9999
1462  GHCND:USC00045721  ...                   -9999
1463  GHCND:USC00045721  ...                   -9999
1464  GHCND:USC00045721  ...                   -9999
9 parameter. Using a left outer join will leave your new merged DataFrame with all rows from the left DataFrame, while discarding rows from the right DataFrame that don’t have a match in the key column of the left DataFrame.

Bạn có thể nghĩ về điều này như là một nửa người bán hàng, nửa người nội bộ. Ví dụ dưới đây cho bạn thấy điều này trong hành động:

>>>

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)

Nếu bạn nhớ từ khi bạn kiểm tra thuộc tính

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
4 của
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
6, thì bạn sẽ thấy số lượng hàng trong
>>> right_merged = pd.merge(
...     precip_one_station, climate_temp, how="right", on=["STATION", "DATE"]
... )
>>> right_merged.shape
(127020, 48)
9 là như nhau. Với sự tham gia bên ngoài, bạn có thể mong đợi có cùng số lượng hàng với DataFrame lớn hơn. Đó là vì không có hàng nào bị mất ở một tham gia bên ngoài, ngay cả khi họ không có một trận đấu trong khung dữ liệu khác.

>>>

>>> left_merged_reversed = pd.merge(
...     precip_one_station, climate_temp, how="left", on=["STATION", "DATE"]
... )
>>> left_merged_reversed.shape
(365, 48)

Nếu bạn nhớ từ khi bạn kiểm tra thuộc tính

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
4 của
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
6, thì bạn sẽ thấy số lượng hàng trong
>>> right_merged = pd.merge(
...     precip_one_station, climate_temp, how="right", on=["STATION", "DATE"]
... )
>>> right_merged.shape
(127020, 48)
9 là như nhau. Với sự tham gia bên ngoài, bạn có thể mong đợi có cùng số lượng hàng với DataFrame lớn hơn. Đó là vì không có hàng nào bị mất ở một tham gia bên ngoài, ngay cả khi họ không có một trận đấu trong khung dữ liệu khác.

Chỗ nối bên trái

Trong ví dụ này, bạn sẽ chỉ định một tham gia bên trái, còn được gọi là tham gia bên ngoài bên trái với tham số ____39. Sử dụng tham gia bên ngoài bên trái sẽ để lại DataFrame được hợp nhất mới của bạn với tất cả các hàng từ DataFrame bên trái, trong khi loại bỏ các hàng khỏi khung dữ liệu bên phải mà don có một khớp trong cột chính của DataFrame bên trái.right outer join, is the mirror-image version of the left join. With this join, all rows from the right DataFrame will be retained, while rows in the left DataFrame without a match in the key column of the right DataFrame will be discarded.

Bạn có thể nghĩ về điều này như là một nửa người bán hàng, nửa người nội bộ. Ví dụ dưới đây cho bạn thấy điều này trong hành động:

>>>

>>> right_merged = pd.merge(
...     precip_one_station, climate_temp, how="right", on=["STATION", "DATE"]
... )
>>> right_merged.shape
(127020, 48)

Nếu bạn nhớ từ khi bạn kiểm tra thuộc tính

>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
4 của
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
6, thì bạn sẽ thấy số lượng hàng trong
>>> right_merged = pd.merge(
...     precip_one_station, climate_temp, how="right", on=["STATION", "DATE"]
... )
>>> right_merged.shape
(127020, 48)
9 là như nhau. Với sự tham gia bên ngoài, bạn có thể mong đợi có cùng số lượng hàng với DataFrame lớn hơn. Đó là vì không có hàng nào bị mất ở một tham gia bên ngoài, ngay cả khi họ không có một trận đấu trong khung dữ liệu khác.

Chỗ nối bên trái

Trong ví dụ này, bạn sẽ chỉ định một tham gia bên trái, còn được gọi là tham gia bên ngoài bên trái với tham số ____39. Sử dụng tham gia bên ngoài bên trái sẽ để lại DataFrame được hợp nhất mới của bạn với tất cả các hàng từ DataFrame bên trái, trong khi loại bỏ các hàng khỏi khung dữ liệu bên phải mà don có một khớp trong cột chính của DataFrame bên trái.

Bạn có thể nghĩ về điều này như là một nửa người bán hàng, nửa người nội bộ. Ví dụ dưới đây cho bạn thấy điều này trong hành động:

>>> climate_temp.head() STATION STATION_NAME ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL 0 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 1 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 2 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 3 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 4 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 >>> climate_precip.head() STATION ... DLY-SNOW-PCTALL-GE050TI 0 GHCND:USC00049099 ... -9999 1 GHCND:USC00049099 ... -9999 2 GHCND:USC00049099 ... -9999 3 GHCND:USC00049099 ... 0 4 GHCND:USC00049099 ... 0 01 có 127.020 hàng, khớp với số lượng hàng trong DataFrame bên trái, >>> left_merged = pd.merge( ... climate_temp, precip_one_station, how="left", on=["STATION", "DATE"] ... ) >>> left_merged.shape (127020, 48) 6. Để chứng minh rằng điều này chỉ giữ cho DataFrame bên trái, hãy chạy cùng một mã, nhưng thay đổi vị trí của >>> left_merged_reversed = pd.merge( ... precip_one_station, climate_temp, how="left", on=["STATION", "DATE"] ... ) >>> left_merged_reversed.shape (365, 48) 1 và >>> left_merged = pd.merge( ... climate_temp, precip_one_station, how="left", on=["STATION", "DATE"] ... ) >>> left_merged.shape (127020, 48) 6:

Điều này dẫn đến một khung dữ liệu với 365 hàng, phù hợp với số lượng hàng trong

>>> left_merged_reversed = pd.merge(
...     precip_one_station, climate_temp, how="left", on=["STATION", "DATE"]
... )
>>> left_merged_reversed.shape
(365, 48)
1.module function,
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 is an instance method that lives on your DataFrame. This enables you to specify only one DataFrame, which will join the DataFrame you call
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 on.

Đúng vậy tham gia

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
0

Tham gia bên phải, hoặc tham gia bên ngoài bên phải, là phiên bản hình ảnh gương của tham gia bên trái. Với sự tham gia này, tất cả các hàng từ khung dữ liệu bên phải sẽ được giữ lại, trong khi các hàng trong khung dữ liệu bên trái mà không có khớp trong cột chính của khung dữ liệu bên phải sẽ bị loại bỏ.

Để chứng minh làm thế nào các tham gia bên phải và trái là hình ảnh phản chiếu của nhau, trong ví dụ bên dưới, bạn sẽ tạo lại khung dữ liệu

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
01 từ trên cao, chỉ lần này sử dụng tham gia bên phải:

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
1

Ở đây, bạn chỉ cần lật các vị trí của các khung dữ liệu đầu vào và chỉ định tham gia bên phải. Khi bạn kiểm tra

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
07, bạn có thể nhận thấy rằng nó không chính xác như
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
01. Sự khác biệt duy nhất giữa hai là thứ tự của các cột: các cột đầu vào đầu tiên sẽ luôn là chữ cái đầu tiên trong DataFrame mới được hình thành.

>>> climate_temp.shape (127020, 21) >>> climate_precip.shape (151110, 29) 4 là phức tạp nhất của các công cụ kết hợp dữ liệu PANDAS. Nó cũng là nền tảng mà các công cụ khác được xây dựng. Sự phức tạp của nó là sức mạnh lớn nhất của nó, cho phép bạn kết hợp các bộ dữ liệu theo mọi cách và tạo ra những hiểu biết mới về dữ liệu của bạn.

Mặt khác, sự phức tạp này làm cho

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 khó sử dụng mà không cần nắm bắt trực quan các hoạt động lý thuyết và cơ sở dữ liệu. Trong phần này, bạn đã tìm hiểu về các kỹ thuật hợp nhất dữ liệu khác nhau, cũng như hợp nhất nhiều-một và nhiều đến nhiều, cuối cùng đến từ lý thuyết tập hợp. Để biết thêm thông tin về lý thuyết tập hợp, hãy xem các bộ trong Python.

Bây giờ, bạn sẽ nhìn vào

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5, một phiên bản đơn giản hóa của
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4.

  • Pandas

    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    5: Kết hợp dữ liệu trên cột hoặc chỉ mục is the only required parameter. It defines the other DataFrame to join. You can also specify a list of DataFrames here, allowing you to combine a number of datasets in a single
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    5 call.

  • >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    4 Chỉ định một cột hoặc tên chỉ mục tùy chọn cho DataFrame bên trái (
    >>> left_merged = pd.merge(
    ...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
    ... )
    >>> left_merged.shape
    (127020, 48)
    
    6 trong ví dụ trước) để tham gia chỉ mục
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    33 DataFrame. Nếu nó được đặt thành
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    4, đó là mặc định, thì bạn sẽ nhận được một chỉ số chỉ mục.
    specifies an optional column or index name for the left DataFrame (
    >>> left_merged = pd.merge(
    ...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
    ... )
    >>> left_merged.shape
    (127020, 48)
    
    6 in the previous example) to join the
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    33 DataFrame’s index. If it’s set to
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    4, which is the default, then you’ll get an index-on-index join.

  • >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    9 có các tùy chọn tương tự như
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    9 từ
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    4. Sự khác biệt là dựa trên chỉ mục của nó trừ khi bạn cũng chỉ định các cột có
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    4.
    has the same options as
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    9 from
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    4. The difference is that it’s index-based unless you also specify columns with
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    4.

  • >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    21 và
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    22 tương tự như
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    9 trong
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    4. Họ chỉ định một hậu tố để thêm vào bất kỳ cột chồng chéo nào nhưng không có hiệu lực khi chuyển danh sách các khung dữ liệu
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    33.
    and
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    22
    are similar to
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    9 in
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    4. They specify a suffix to add to any overlapping columns but have no effect when passing a list of
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    33 DataFrames.

  • >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    48 có thể được bật để sắp xếp DataFrame kết quả theo phím tham gia. can be enabled to sort the resulting DataFrame by the join key.

Ví dụ

Trong phần này, bạn sẽ thấy các ví dụ hiển thị một vài trường hợp sử dụng khác nhau cho

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5. Một số sẽ đơn giản hóa các cuộc gọi
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4. Những người khác sẽ là các tính năng khiến
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 khác biệt với các cuộc gọi
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 dài hơn.

Vì bạn đã thấy một cuộc gọi

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 ngắn, trong ví dụ đầu tiên này, bạn sẽ cố gắng tạo lại cuộc gọi
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 với
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5. Điều này sẽ yêu cầu gì? Dành một giây để suy nghĩ về một giải pháp khả thi, và sau đó nhìn vào giải pháp được đề xuất dưới đây:

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
2

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 hoạt động trên các chỉ số, nếu bạn muốn tạo lại
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 từ trước, thì bạn phải đặt các chỉ số trên các cột tham gia mà bạn chỉ định. Trong ví dụ này, bạn đã sử dụng
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
58 để đặt các chỉ số của mình cho các cột chính trong tham gia. Lưu ý rằng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 thực hiện tham gia bên trái theo mặc định, vì vậy bạn cần giải thích một cách một cách một cách kỹ lưỡng
>>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
>>> precip_one_station.head()
                STATION  ... DLY-SNOW-PCTALL-GE050TI
1460  GHCND:USC00045721  ...                   -9999
1461  GHCND:USC00045721  ...                   -9999
1462  GHCND:USC00045721  ...                   -9999
1463  GHCND:USC00045721  ...                   -9999
1464  GHCND:USC00045721  ...                   -9999
9 để thực hiện tham gia bên trong.

Với điều này, kết nối giữa

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 và
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 sẽ rõ ràng hơn.

Dưới đây bạn sẽ thấy một cuộc gọi

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 mà gần như trần trụi. Vì có các cột chồng chéo, bạn sẽ cần chỉ định một hậu tố với
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
21,
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
22 hoặc cả hai, nhưng ví dụ này sẽ chứng minh hành vi điển hình hơn của
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5:

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
3

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 hoạt động trên các chỉ số, nếu bạn muốn tạo lại
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 từ trước, thì bạn phải đặt các chỉ số trên các cột tham gia mà bạn chỉ định. Trong ví dụ này, bạn đã sử dụng
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
58 để đặt các chỉ số của mình cho các cột chính trong tham gia. Lưu ý rằng
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 thực hiện tham gia bên trái theo mặc định, vì vậy bạn cần giải thích một cách một cách một cách kỹ lưỡng
>>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
>>> precip_one_station.head()
                STATION  ... DLY-SNOW-PCTALL-GE050TI
1460  GHCND:USC00045721  ...                   -9999
1461  GHCND:USC00045721  ...                   -9999
1462  GHCND:USC00045721  ...                   -9999
1463  GHCND:USC00045721  ...                   -9999
1464  GHCND:USC00045721  ...                   -9999
9 để thực hiện tham gia bên trong.

Với điều này, kết nối giữa

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 và
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 sẽ rõ ràng hơn.

Dưới đây bạn sẽ thấy một cuộc gọi >>> climate_temp.shape (127020, 21) >>> climate_precip.shape (151110, 29) 5 mà gần như trần trụi. Vì có các cột chồng chéo, bạn sẽ cần chỉ định một hậu tố với >>> climate_temp.head() STATION STATION_NAME ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL 0 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 1 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 2 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 3 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 4 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 >>> climate_precip.head() STATION ... DLY-SNOW-PCTALL-GE050TI 0 GHCND:USC00049099 ... -9999 1 GHCND:USC00049099 ... -9999 2 GHCND:USC00049099 ... -9999 3 GHCND:USC00049099 ... 0 4 GHCND:USC00049099 ... 0 21, >>> climate_temp.head() STATION STATION_NAME ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL 0 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 1 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 2 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 3 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 4 GHCND:USC00049099 TWENTYNINE PALMS CA US ... 10 15 >>> climate_precip.head() STATION ... DLY-SNOW-PCTALL-GE050TI 0 GHCND:USC00049099 ... -9999 1 GHCND:USC00049099 ... -9999 2 GHCND:USC00049099 ... -9999 3 GHCND:USC00049099 ... 0 4 GHCND:USC00049099 ... 0 22 hoặc cả hai, nhưng ví dụ này sẽ chứng minh hành vi điển hình hơn của >>> climate_temp.shape (127020, 21) >>> climate_precip.shape (151110, 29) 5:

Ví dụ này nên gợi nhớ đến những gì bạn đã thấy trong phần giới thiệu về

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 trước đó. Cuộc gọi là như nhau, dẫn đến một tham gia bên trái tạo ra một khung dữ liệu có cùng số lượng hàng với
>>> left_merged = pd.merge(
...     climate_temp, precip_one_station, how="left", on=["STATION", "DATE"]
... )
>>> left_merged.shape
(127020, 48)
6.

Trong phần này, bạn đã tìm hiểu về

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 và các tham số và sử dụng của nó. Bạn cũng đã tìm hiểu về cách
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 hoạt động dưới mui xe và bạn đã tạo lại cuộc gọi
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 với
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 để hiểu rõ hơn về mối liên hệ giữa hai kỹ thuật.axis — either the row axis or column axis. Visually, a concatenation with no parameters along rows would look like this:

Hướng dẫn how does the merge function work in python? - hàm hợp nhất hoạt động như thế nào trong python?

Pandas

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
6: Kết hợp dữ liệu trên các hàng hoặc cột

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
4

Kết nối có một chút khác biệt so với các kỹ thuật hợp nhất mà bạn đã thấy ở trên. Với sự hợp nhất, bạn có thể mong đợi bộ dữ liệu kết quả sẽ có các hàng từ các bộ dữ liệu cha được trộn lẫn với nhau, thường dựa trên một số điểm chung. Tùy thuộc vào loại hợp nhất, bạn cũng có thể mất các hàng mà don don có các trận đấu trong bộ dữ liệu khác.

Hướng dẫn how does the merge function work in python? - hàm hợp nhất hoạt động như thế nào trong python?

Với sự kết hợp, các bộ dữ liệu của bạn chỉ được khâu lại với nhau dọc theo một trục - hoặc trục trục hoặc trục cột. Trực quan, một sự kết hợp không có tham số dọc theo các hàng sẽ trông như thế này:

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
5

Để thực hiện điều này trong mã, bạn sẽ sử dụng

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
6 và truyền cho nó một danh sách các khung dữ liệu mà bạn muốn kết nối. Mã cho nhiệm vụ này sẽ trông như thế này:

Điều gì sẽ xảy ra nếu bạn muốn thực hiện một sự kết hợp dọc theo các cột thay thế? Đầu tiên, hãy xem biểu diễn trực quan của hoạt động này:

Để thực hiện điều này, bạn sẽ sử dụng cuộc gọi

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
6 như bạn đã làm ở trên, nhưng bạn cũng sẽ cần phải vượt qua tham số
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
76 với giá trị
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
77 hoặc
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
78:

Bạn sẽ tìm hiểu thêm về các tham số cho

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
6 trong phần bên dưới.

Cách sử dụng

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
6set union, where all data is preserved. You’ve seen this with
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 and
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 as an outer join, and you can specify this with the
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
83 parameter.

Như bạn có thể thấy, Concatenation là một cách đơn giản hơn để kết hợp các bộ dữ liệu. Nó thường được sử dụng để tạo thành một bộ duy nhất, lớn hơn để thực hiện các hoạt động bổ sung.set intersection.

Khi bạn kết hợp các bộ dữ liệu, bạn có thể chỉ định trục dọc theo đó bạn sẽ kết nối. Nhưng điều gì xảy ra với trục khác?

Không. Theo mặc định, kết quả kết hợp trong một liên minh đã thiết lập, trong đó tất cả dữ liệu được bảo tồn. Bạn đã thấy điều này với

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
4 và
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
5 như là một tham gia bên ngoài và bạn có thể chỉ định điều này với tham số
>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
83.

  • Nếu bạn sử dụng tham số này, thì mặc định là

    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    4, nhưng bạn cũng có tùy chọn
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    3, sẽ thực hiện tham gia bên trong hoặc đặt giao lộ.
    takes any sequence—typically a list—of
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    2 or
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    3 objects to be concatenated. You can also provide a dictionary. In this case, the keys will be used to construct a hierarchical index.

  • >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    76 đại diện cho trục mà bạn sẽ kết hợp với nhau. Giá trị mặc định là
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    93, nối dọc theo chỉ mục hoặc trục hàng. Ngoài ra, giá trị của
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    77 sẽ kết hợp theo chiều dọc, dọc theo các cột. Bạn cũng có thể sử dụng các giá trị chuỗi
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    95 hoặc
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    78.
    represents the axis that you’ll concatenate along. The default value is
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    93, which concatenates along the index, or row axis. Alternatively, a value of
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    77 will concatenate vertically, along columns. You can also use the string values
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    95 or
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    78.

  • >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    83 tương tự như tham số
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    9 trong các kỹ thuật khác, nhưng nó chỉ chấp nhận các giá trị
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    3 hoặc
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    4. Giá trị mặc định là
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    4, bảo tồn dữ liệu, trong khi
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    3 sẽ loại bỏ dữ liệu không có khớp trong bộ dữ liệu khác.
    is similar to the
    >>> precip_one_station = climate_precip.query("STATION == 'GHCND:USC00045721'")
    >>> precip_one_station.head()
                    STATION  ... DLY-SNOW-PCTALL-GE050TI
    1460  GHCND:USC00045721  ...                   -9999
    1461  GHCND:USC00045721  ...                   -9999
    1462  GHCND:USC00045721  ...                   -9999
    1463  GHCND:USC00045721  ...                   -9999
    1464  GHCND:USC00045721  ...                   -9999
    
    9 parameter in the other techniques, but it only accepts the values
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    3 or
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    4. The default value is
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    4, which preserves data, while
    >>> outer_merged = pd.merge(
    ...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
    ... )
    >>> outer_merged.shape
    (127020, 48)
    
    3 would eliminate data that doesn’t have a match in the other dataset.

  • >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    03 có giá trị boolean
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    8 hoặc
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8. Nó mặc định là
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8. Nếu
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    8, thì bộ dữ liệu kết hợp mới đã giành được bảo quản các giá trị chỉ mục ban đầu trong trục được chỉ định trong tham số
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    76. Điều này cho phép bạn có các giá trị chỉ mục hoàn toàn mới.
    takes a Boolean
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    8 or
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8 value. It defaults to
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8. If
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    8, then the new combined dataset won’t preserve the original index values in the axis specified in the
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    76 parameter. This lets you have entirely new index values.

  • >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    09 cho phép bạn xây dựng một chỉ số phân cấp. Một trường hợp sử dụng phổ biến là có một chỉ mục mới trong khi bảo quản các chỉ số ban đầu để bạn có thể biết các hàng nào, ví dụ, đến từ đó dữ liệu gốc. allows you to construct a hierarchical index. One common use case is to have a new index while preserving the original indices so that you can tell which rows, for example, come from which original dataset.

  • >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    10 Chỉ định xem bạn có muốn sao chép dữ liệu nguồn hay không. Giá trị mặc định là
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    8. Nếu giá trị được đặt thành
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8, thì Pandas đã giành được các bản sao của dữ liệu nguồn.
    specifies whether you want to copy the source data. The default value is
    >>> inner_merged_total = pd.merge(
    ...     climate_temp, climate_precip, on=["STATION", "DATE"]
    ... )
    >>> inner_merged_total.shape
    (123005, 48)
    
    8. If the value is set to
    >>> inner_merged = pd.merge(precip_one_station, climate_temp)
    >>> inner_merged.head()
                 STATION            STATION_NAME  ...  DLY-HTDD-BASE60  DLY-HTDD-NORMAL
    0  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    1  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    2  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    3  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    4  GHCND:USC00045721  MITCHELL CAVERNS CA US  ...               14               19
    
    >>> inner_merged.shape
    (365, 47)
    
    8, then pandas won’t make copies of the source data.

Danh sách này không đầy đủ. Bạn có thể tìm thấy danh sách hoàn chỉnh, cập nhật các tham số trong tài liệu Pandas.

Ví dụ

Đầu tiên, bạn sẽ thực hiện một cách kết hợp cơ bản dọc theo trục mặc định bằng cách sử dụng các khung dữ liệu mà bạn đã chơi trong suốt hướng dẫn này:

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
6

Điều này rất đơn giản theo thiết kế. Ở đây, bạn đã tạo một khung dữ liệu là một gấp đôi của một khung dữ liệu nhỏ đã được tạo trước đó. Một điều cần chú ý là các chỉ số lặp lại. Nếu bạn muốn một chỉ mục mới, dựa trên 0, thì bạn có thể sử dụng tham số

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
03:

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
7

Điều này rất đơn giản theo thiết kế. Ở đây, bạn đã tạo một khung dữ liệu là một gấp đôi của một khung dữ liệu nhỏ đã được tạo trước đó. Một điều cần chú ý là các chỉ số lặp lại. Nếu bạn muốn một chỉ mục mới, dựa trên 0, thì bạn có thể sử dụng tham số

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
03:

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
8

Điều này rất đơn giản theo thiết kế. Ở đây, bạn đã tạo một khung dữ liệu là một gấp đôi của một khung dữ liệu nhỏ đã được tạo trước đó. Một điều cần chú ý là các chỉ số lặp lại. Nếu bạn muốn một chỉ mục mới, dựa trên 0, thì bạn có thể sử dụng tham số

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
03:

Như đã lưu ý trước đây, nếu bạn nối dọc theo trục 0 (hàng) nhưng có nhãn trong trục 1 (cột) không phù hợp với nhau, thì các cột đó sẽ được thêm vào và điền vào các giá trị

>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
9. Điều này dẫn đến một sự tham gia bên ngoài:

>>>

>>> climate_temp.head()
             STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15

>>> climate_precip.head()
             STATION  ... DLY-SNOW-PCTALL-GE050TI
0  GHCND:USC00049099  ...                   -9999
1  GHCND:USC00049099  ...                   -9999
2  GHCND:USC00049099  ...                   -9999
3  GHCND:USC00049099  ...                       0
4  GHCND:USC00049099  ...                       0
9

Điều này rất đơn giản theo thiết kế. Ở đây, bạn đã tạo một khung dữ liệu là một gấp đôi của một khung dữ liệu nhỏ đã được tạo trước đó. Một điều cần chú ý là các chỉ số lặp lại. Nếu bạn muốn một chỉ mục mới, dựa trên 0, thì bạn có thể sử dụng tham số

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
03:

Như đã lưu ý trước đây, nếu bạn nối dọc theo trục 0 (hàng) nhưng có nhãn trong trục 1 (cột) không phù hợp với nhau, thì các cột đó sẽ được thêm vào và điền vào các giá trị

>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
9. Điều này dẫn đến một sự tham gia bên ngoài:

>>>

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
0

Điều này rất đơn giản theo thiết kế. Ở đây, bạn đã tạo một khung dữ liệu là một gấp đôi của một khung dữ liệu nhỏ đã được tạo trước đó. Một điều cần chú ý là các chỉ số lặp lại. Nếu bạn muốn một chỉ mục mới, dựa trên 0, thì bạn có thể sử dụng tham số

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
03:

Như đã lưu ý trước đây, nếu bạn nối dọc theo trục 0 (hàng) nhưng có nhãn trong trục 1 (cột) không phù hợp với nhau, thì các cột đó sẽ được thêm vào và điền vào các giá trị

>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
9. Điều này dẫn đến một sự tham gia bên ngoài:

>>>

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
1

Điều này rất đơn giản theo thiết kế. Ở đây, bạn đã tạo một khung dữ liệu là một gấp đôi của một khung dữ liệu nhỏ đã được tạo trước đó. Một điều cần chú ý là các chỉ số lặp lại. Nếu bạn muốn một chỉ mục mới, dựa trên 0, thì bạn có thể sử dụng tham số

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
03:

Như đã lưu ý trước đây, nếu bạn nối dọc theo trục 0 (hàng) nhưng có nhãn trong trục 1 (cột) không phù hợp với nhau, thì các cột đó sẽ được thêm vào và điền vào các giá trị >>> outer_merged = pd.merge( ... precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"] ... ) >>> outer_merged.shape (127020, 48) 9. Điều này dẫn đến một sự tham gia bên ngoài:

Với hai khung dữ liệu này, vì bạn chỉ cần nối các hàng, rất ít cột có cùng tên. Điều đó có nghĩa là bạn sẽ thấy rất nhiều cột có giá trị

>>> outer_merged = pd.merge(
...     precip_one_station, climate_temp, how="outer", on=["STATION", "DATE"]
... )
>>> outer_merged.shape
(127020, 48)
9.

  1. Thay vào đó, để thả các cột có bất kỳ dữ liệu bị thiếu nào, hãy sử dụng tham số
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    83 với giá trị
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    17 để thực hiện tham gia bên trong:
    for combining data on common columns or indices
  2. Sử dụng tham gia bên trong, bạn sẽ chỉ còn lại các cột mà các khung dữ liệu gốc có điểm chung:
    >>> left_merged_reversed = pd.merge(
    ...     precip_one_station, climate_temp, how="left", on=["STATION", "DATE"]
    ... )
    >>> left_merged_reversed.shape
    (365, 48)
    
    3,
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    19 và
    >>> climate_temp.shape
    (127020, 21)
    >>> climate_precip.shape
    (151110, 29)
    
    20.
    for combining data on a key column or an index
  3. Bạn cũng có thể lật cái này bằng cách đặt tham số
    >>> climate_temp.head()
                 STATION            STATION_NAME  ... DLY-HTDD-BASE60 DLY-HTDD-NORMAL
    0  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    1  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    2  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    3  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    4  GHCND:USC00049099  TWENTYNINE PALMS CA US  ...              10              15
    
    >>> climate_precip.head()
                 STATION  ... DLY-SNOW-PCTALL-GE050TI
    0  GHCND:USC00049099  ...                   -9999
    1  GHCND:USC00049099  ...                   -9999
    2  GHCND:USC00049099  ...                   -9999
    3  GHCND:USC00049099  ...                       0
    4  GHCND:USC00049099  ...                       0
    
    76:
    for combining DataFrames across rows or columns

Bây giờ bạn chỉ có các hàng có dữ liệu cho tất cả các cột trong cả hai khung dữ liệu. Nó không phải ngẫu nhiên rằng số lượng hàng tương ứng với khung dữ liệu nhỏ hơn.

Một thủ thuật hữu ích khác để kết hợp là sử dụng tham số

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
09 để tạo nhãn trục phân cấp. Điều này rất hữu ích nếu bạn muốn lưu giữ các chỉ số hoặc tên cột của các bộ dữ liệu gốc nhưng cũng muốn thêm các dữ liệu mới:

Nếu bạn kiểm tra các khung dữ liệu gốc, thì bạn có thể xác minh xem các nhãn trục cấp cao hơn

>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
23 và
>>> climate_temp.shape
(127020, 21)
>>> climate_precip.shape
(151110, 29)
24 đã được thêm vào các hàng thích hợp.

Sự kết luận This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Combining Data in pandas With concat() and merge()

Làm thế nào để chức năng hợp nhất hoạt động?

Hợp nhất là một hàm chung có phương thức chính là cho các khung dữ liệu: Phương thức mặc định buộc các đối số của nó với khung dữ liệu và gọi phương thức "Data.Frame". Theo mặc định, các khung dữ liệu được hợp nhất trên các cột với các tên mà cả hai đều có, nhưng các thông số kỹ thuật riêng biệt của các cột có thể được đưa ra bởi. x và bởi.the default method coerces its arguments to data frames and calls the "data. frame" method. By default the data frames are merged on the columns with names they both have, but separate specifications of the columns can be given by by. x and by.

Làm thế nào để hợp nhất trong gấu trúc hoạt động?

Pandas sử dụng hợp nhất bên trong bên trong theo mặc định.Điều này chỉ giữ các giá trị chung trong cả khung dữ liệu bên trái và bên phải cho dữ liệu được hợp nhất.Trong trường hợp của chúng tôi, chỉ có các hàng có chứa các giá trị use_id phổ biến giữa user_usage và user_device vẫn còn trong dữ liệu được hợp nhất - bên trong_merge.. This keeps only the common values in both the left and right dataframes for the merged data. In our case, only the rows that contain use_id values that are common between user_usage and user_device remain in the merged data — inner_merge.

Làm cách nào để hợp nhất hai bộ dữ liệu trong Python?

PD.merge (DF1, DF2) PD.Hợp nhất () tự động phát hiện cột chung giữa hai bộ dữ liệu và kết hợp chúng trên cột này.Trong trường hợp này PD.Hợp nhất () đã sử dụng các cài đặt mặc định và trả về một bộ dữ liệu cuối cùng chỉ chứa các hàng chung từ cả hai bộ dữ liệu. pd. merge() automatically detects the common column between two datasets and combines them on this column. In this case pd. merge() used the default settings and returned a final dataset which contains only the common rows from both the datasets.

Làm thế nào để bạn hợp nhất các cột trong Python?

Bạn có thể vượt qua hai DataFrame để được hợp nhất với phương thức pandas.merge ().Điều này thu thập tất cả các cột phổ biến trong cả hai khung dữ liệu và thay thế từng cột chung trong cả hai DataFrame với một cột duy nhất.Nó hợp nhất DataFrames DF và DF1 gán cho Merged_DF.pass two DataFrame to be merged to the pandas. merge() method. This collects all common columns in both DataFrames and replaces each common column in both DataFrame with a single one. It merges the DataFrames df and df1 assigns to merged_df .