如何使用应用函数和 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)
您的代码存在几个问题:
- 您必须使用函数名称调用
apply
,category
category
函数引用了一个未定义的变量 umur
。应该是 age
?
- 您的
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')
我正在尝试使用 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)
您的代码存在几个问题:
- 您必须使用函数名称调用
apply
,category
category
函数引用了一个未定义的变量umur
。应该是age
?- 您的
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')