Computer >> Máy Tính >  >> Lập trình >> Python

Hợp nhất khung dữ liệu Pandas với một cột chung và đặt NaN cho các giá trị chưa khớp

Để hợp nhất hai Pandas DataFrame với cột chung, hãy sử dụng merge () chức năng và đặt BẬT tham số là tên cột. Để đặt NaN cho các giá trị chưa được so khớp, hãy sử dụng “ cách ”Và đặt nó ở bên trái hoặc đúng . Điều đó có nghĩa là hợp nhất trái hoặc phải.

Đầu tiên, hãy nhập thư viện gấu trúc với bí danh -

import pandas as pd

Hãy để chúng tôi tạo DataFrame1 -

dataFrame1 = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],"Units": [100, 150, 110, 80, 110, 90]
   }
)

Hãy để chúng tôi tạo DataFrame2

dataFrame2 = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],"Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]

   }
)

Bây giờ, hợp nhất DataFrames với cột chung Xe. Bên trái "“ hiển thị tất cả các giá trị của DataFrame bên trái và đặt NaN cho các giá trị chưa khớp từ 2 nd DataFrame -

mergedRes = pd.merge(dataFrame1, dataFrame2, on ='Car', how ="left")

Ví dụ

Sau đây là mã

import pandas as pd

# Create DataFrame1
dataFrame1 = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],"Units": [100, 150, 110, 80, 110, 90]
   }
)

print("DataFrame1 ...\n",dataFrame1)

# Create DataFrame2
dataFrame2 = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],"Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]

   }
)

print("\nDataFrame2 ...\n",dataFrame2)

# merge DataFrames with common column Car and "left" sets NaN for unmatched values from second DataFrame
mergedRes = pd.merge(dataFrame1, dataFrame2, on ='Car', how ="left")
print("\nMerged data frame with common column...\n", mergedRes)

Đầu ra

Sau đây là mã -

DataFrame1 ...
       Car   Units
0      BMW     100
1    Lexus     150
2     Audi     110
3  Mustang      80
4  Bentley     110
5   Jaguar      90

DataFrame2 ...
        Car   Reg_Price
0       BMW        7000
1     Lexus        1500
2     Tesla        5000
3   Mustang        8000
4  Mercedes        9000
5    Jaguar        6000

Merged data frame with common column...
       Car   Units   Reg_Price
0      BMW     100      7000.0
1    Lexus     150      1500.0
2     Audi     110         NaN
3  Mustang      80      8000.0
4  Bentley     110         NaN
5   Jaguar      90      6000.0