Gán giá trị cho biến dựa trên điều kiện python

Có nhiều lúc bạn có thể cần đặt giá trị cột Pandas dựa trên điều kiện của cột khác. Trong bài đăng này, bạn sẽ tìm hiểu tất cả các cách khác nhau để bạn có thể tạo các cột có điều kiện Pandas

Mục lục

Video hướng dẫn

Nếu bạn muốn làm theo hướng dẫn bằng video, hãy xem video của tôi bên dưới

Đang tải một khung dữ liệu mẫu

Hãy bắt đầu bằng cách tải một khung dữ liệu Pandas mẫu mà chúng ta có thể sử dụng trong suốt hướng dẫn này

Chúng tôi sẽ bắt đầu bằng cách nhập gấu trúc và tải khung dữ liệu bằng phương thức

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
7

import pandas as pd

df = pd.DataFrame.from_dict(
    {
        'Name': ['Jane', 'Melissa', 'John', 'Matt'],
        'Age': [23, 45, 35, 64],
        'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
        'Gender': ['F', 'F', 'M', 'M']
    }
)

print(df)

Điều này trả về khung dữ liệu sau

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M

Sử dụng Pandas loc để đặt Pandas có điều kiện cột

Pandas loc cực kỳ mạnh mẽ. Nếu bạn cần xem lại loc (hoặc iloc),. Pandas' loc tạo mặt nạ boolean, dựa trên một điều kiện. Đôi khi, điều kiện đó có thể chỉ là chọn hàng và cột, nhưng nó cũng có thể được sử dụng để lọc các khung dữ liệu. Các khung dữ liệu được lọc này sau đó có thể có các giá trị được áp dụng cho chúng

Hãy khám phá cú pháp một chút

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’

Với cú pháp trên, chúng tôi lọc khung dữ liệu bằng cách sử dụng

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
8 và sau đó gán giá trị cho bất kỳ hàng nào trong cột (hoặc các cột) nơi điều kiện được đáp ứng

Hãy thử điều này bằng cách chỉ định chuỗi 'Dưới 30' cho bất kỳ ai có độ tuổi dưới 30 và 'Trên 30' cho bất kỳ ai từ 30 tuổi trở lên

df['Age Category'] = 'Over 30'
df.loc[df['Age'] < 30, 'Age Category'] = 'Under 30'

Hãy xem những gì chúng tôi đã làm ở đây

  1. Chúng tôi đã gán chuỗi 'Trên 30' cho mọi bản ghi trong khung dữ liệu. Để tìm hiểu thêm về điều này, hãy xem bài đăng của tôi tại đây hoặc tạo các cột mới
  2. Sau đó, chúng tôi sử dụng
          Name  Age Birth City Gender
    0     Jane   23     London      F
    1  Melissa   45      Paris      F
    2     John   35    Toronto      M
    3     Matt   64    Atlanta      M
    8 để tạo mặt nạ boolean trên cột Tuổi để lọc xuống các hàng có tuổi nhỏ hơn 30. Khi đáp ứng điều kiện này, cột Danh mục Độ tuổi được gán giá trị mới 'Dưới 30 tuổi'

Nhưng điều gì xảy ra khi bạn có nhiều điều kiện? . Hãy xem làm thế nào chúng ta có thể thực hiện điều này bằng cách sử dụng phương thức

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
1 của numpy

Sử dụng Numpy Select để đặt giá trị bằng nhiều điều kiện

Tương tự như phương pháp trên để sử dụng

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
8 để tạo cột điều kiện trong Pandas, chúng ta có thể sử dụng phương pháp numpy
df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
1

Hãy bắt đầu bằng cách nhập numpy và chúng tôi sẽ đặt cho nó bí danh thông thường là

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
4

import numpy as np

Bây giờ, giả sử chúng ta muốn áp dụng một số nhóm tuổi khác nhau, như bên dưới

  • <20 years old,
  • 20-39 tuổi,
  • 40-59 tuổi,
  • 60 tuổi trở lên

Để làm điều này, chúng tôi sẽ tạo một danh sách các điều kiện và giá trị tương ứng để điền vào

conditions = [
    (df['Age'] < 20),
    (df['Age'] >= 20) & (df['Age'] < 40),
    (df['Age'] >= 40) & (df['Age'] < 59),
    (df['Age'] >= 60)
]

values = ['<20 years old', '20-39 years old', '40-59 years old', '60+ years old']

df['Age Group'] = np.select(conditions, values)

print(df)

Chạy cái này trả về khung dữ liệu sau

      Name  Age Birth City Gender        Age Group
0     Jane   23     London      F  20-39 years old
1  Melissa   45      Paris      F  40-59 years old
2     John   35    Toronto      M  20-39 years old
3     Matt   64    Atlanta      M    60+ years old

Hãy phá vỡ những gì xảy ra ở đây

  • Trước tiên, chúng tôi xác định danh sách các điều kiện trong đó các tiêu chí được chỉ định. Nhớ lại rằng các danh sách được sắp xếp có nghĩa là chúng phải theo thứ tự mà bạn muốn các giá trị tương ứng xuất hiện
  • Sau đó, chúng tôi xác định danh sách các giá trị sẽ sử dụng, danh sách này tương ứng với các giá trị bạn muốn áp dụng trong cột mới của mình

Một cái gì đó để xem xét ở đây là điều này có thể là một chút phản trực giác để viết. Tương tự, bạn có thể định nghĩa một hàm để áp dụng các giá trị khác nhau. Chúng tôi sẽ đề cập đến điều này trong phần sử dụng

Một trong những lợi ích chính là việc sử dụng numpy as rất nhanh, đặc biệt khi so sánh với việc sử dụng phương thức

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
5

Sử dụng Bản đồ Pandas để Đặt giá trị trong Cột khác

Phương pháp

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
6 của Pandas rất hữu ích khi bạn áp dụng nhãn cho một cột khác. Để sử dụng phương pháp này, bạn xác định một từ điển để áp dụng cho cột

Đối với khung dữ liệu mẫu của chúng tôi, hãy tưởng tượng rằng chúng tôi có văn phòng ở Mỹ, Canada và Pháp. Chúng tôi muốn ánh xạ các thành phố tới các quốc gia tương ứng của chúng và áp dụng và giá trị "Khác" cho bất kỳ thành phố nào khác

city_dict = {
    'Paris': 'France', 
    'Toronto': 'Canada', 
    'Atlanta': 'USA'
}

df['Country'] = df['Birth City'].map(city_dict)

print(df)

Khi chúng tôi in cái này ra, chúng tôi nhận được khung dữ liệu sau

      Name  Age Birth City Gender Country
0     Jane   23     London      F     NaN
1  Melissa   45      Paris      F  France
2     John   35    Toronto      M  Canada
3     Matt   64    Atlanta      M     USA

Những gì chúng ta có thể thấy ở đây là có một giá trị

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
7 được liên kết với bất kỳ Thành phố nào không có quốc gia tương ứng. Nếu chúng tôi muốn áp dụng "Khác" cho bất kỳ giá trị nào bị thiếu, chúng tôi có thể xâu chuỗi phương thức
df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
8

city_dict = {
    'Paris': 'France', 
    'Toronto': 'Canada', 
    'Atlanta': 'USA'
}

df['Country'] = df['Birth City'].map(city_dict).fillna('Other')

print(df)

Điều này trả về khung dữ liệu sau

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
0

Sử dụng Pandas Áp dụng để Áp dụng một chức năng cho một cột

Cuối cùng, bạn có thể áp dụng các hàm tích hợp hoặc tùy chỉnh cho khung dữ liệu bằng phương pháp Pandas

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
5

Chúng ta hãy xem xét cả việc áp dụng các hàm tích hợp như

df['Age Category'] = 'Over 30'
df.loc[df['Age'] < 30, 'Age Category'] = 'Under 30'
0 và thậm chí áp dụng các hàm tùy chỉnh

Áp dụng các hàm tích hợp sẵn của Python cho một cột

Chúng ta có thể dễ dàng áp dụng hàm có sẵn bằng cách sử dụng phương pháp

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
5. Hãy xem cách chúng ta có thể sử dụng hàm
df['Age Category'] = 'Over 30'
df.loc[df['Age'] < 30, 'Age Category'] = 'Under 30'
0 để đếm độ dài của một chuỗi trong một cột nhất định

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
1

Điều này trả về khung dữ liệu sau

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
2

Lưu ý một vài điều ở đây

  • Chúng tôi áp dụng phương pháp
    df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
    5 cho một cột cụ thể,
  • Chúng tôi bỏ qua dấu ngoặc đơn "()"

Sử dụng các gói của bên thứ ba trong Pandas Áp dụng

Tương tự, bạn có thể sử dụng các chức năng từ việc sử dụng các gói. Hãy sử dụng numpy để áp dụng phương pháp

df['Age Category'] = 'Over 30'
df.loc[df['Age'] < 30, 'Age Category'] = 'Under 30'
4 để tìm căn bậc hai của tuổi của một người

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
3

Điều này trả về khung dữ liệu sau

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
4

Sử dụng chức năng tùy chỉnh với Pandas Áp dụng

Điều làm cho phương pháp

df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
5 cực kỳ mạnh mẽ là khả năng xác định và áp dụng các chức năng của riêng bạn

Hãy xem lại cách chúng ta có thể sử dụng an để tạo danh mục độ tuổi như trong ví dụ trước của chúng ta

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
5

Điều này trả về khung dữ liệu sau

      Name  Age Birth City Gender        Age Group
0     Jane   23     London      F  20-39 years old
1  Melissa   45      Paris      F  40-59 years old
2     John   35    Toronto      M  20-39 years old
3     Matt   64    Atlanta      M    60+ years old

Phần kết luận

Trong bài đăng này, bạn đã học được một số cách mà bạn có thể áp dụng các giá trị cho cột khung dữ liệu để tạo cột có điều kiện Pandas, bao gồm sử dụng

      Name  Age Birth City Gender
0     Jane   23     London      F
1  Melissa   45      Paris      F
2     John   35    Toronto      M
3     Matt   64    Atlanta      M
8,
df['Age Category'] = 'Over 30'
df.loc[df['Age'] < 30, 'Age Category'] = 'Under 30'
7, Pandas
df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
6 và Pandas
df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
5. Mỗi phương pháp này có một trường hợp sử dụng khác nhau mà chúng tôi đã khám phá trong suốt bài đăng này

Bạn có thể gán giá trị cho một biến trong Python không?

Trả lời. Có, các biến trong Python có thể được gán lại cho một giá trị mới có kiểu dữ liệu khác với giá trị hiện tại của nó . Trên thực tế, các biến có thể được gán lại cho bất kỳ giá trị hợp lệ nào trong Python, bất kể giá trị hiện tại của nó là bao nhiêu.

Bạn có thể gán một biến trong câu lệnh if Python không?

Chúng ta có thể sử dụng một toán tử đặc biệt để gán một biến trong biểu thức của câu lệnh if . Điều này thường được gọi là "toán tử hải mã" vì cú pháp của nó. cùng dòng. Câu lệnh if có thể nằm trên cùng một dòng với phần thân của nó.