如何使用应用函数和 lambda 对值进行分类

How to categorize value using apply function and lambda

我正在尝试使用 apply 和 lambda 将示例 table 分类为 3 类,但结果总是成熟的,我不明白所以这是代码:

name=["rian","nancy","intan","rubim"]
age=["30","20","20","12"]
gender=["male","female","female","male"]
df = pd.DataFrame({
    "name":name,
    "age":age,
    "gender":gender
})

def category (age):
    if age<20:
        return 'kids'
    elif umur==20:
        return 'youth'
    else:
        return 'mature'

df['category']=df['age'].apply(age)

您的代码存在几个问题:

  1. 您必须使用函数名称调用 applycategory
  2. category 函数引用了一个未定义的变量 umur。应该是 age?
  3. 您的 age 数据是字符串类型,但您想比较它的数值。

解决这些问题得到:

name = ["rian", "nancy", "intan", "rubim"]
age = [30, 20, 20, 12]
gender = ["male", "female", "female", "male"]
df = pd.DataFrame({
    "name": name,
    "age": age,
    "gender": gender
})

def category(age):
    if age < 20:
        return 'kids'
    elif age == 20:
        return 'youth'
    else:
        return 'mature'

df['category'] = df['age'].apply(category)

生成的 DataFrame:

    name  age  gender category
0   rian   30    male   mature
1  nancy   20  female    youth
2  intan   20  female    youth
3  rubim   12    male     kids

我还建议您遵循 Python 格式约定,使您的代码更具可读性。

import pandas as pd
name = ["rian", "nancy", "intan", "rubim"]
age = ["30", "20", "20", "12"]
gender = ["male", "female", "female", "male"]
df = pd.DataFrame({
    "name": name,
    "age": age,
    "gender": gender
})

df.age = df.age.astype(int)
df['category'] = df['age'].apply(lambda x: 'mature' if x > 20 else 'kids' if x < 20 else 'youth')