python apply lambda if_在Python中在Pandas中使用Apply使用多个if语句的Lambda函数

我试图根据像这样的数据框中的人的大小来推断分类:

Size

1 80000

2 8000000

3 8000000000

...

我希望它看起来像这样:

Size Classification

1 80000 <1m

2 8000000 1-10m

3 8000000000 >1bi

...

我理解理想的过程是应用这样的lambda函数:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else "1-10m" if 1000000

我检查了几个关于lambda函数中的多个ifs的帖子,here is an example link,但是这个synthax在多个ifs语句中由于某种原因不适合我,但是它在单个if条件下工作.

所以我尝试了这个“非常优雅”的解决方案:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else pass)

df['Classification']=df['Size'].apply(lambda x: "1-10m" if 1000000 < x < 10000000 else pass)

df['Classification']=df['Size'].apply(lambda x: "10-50m" if 10000000 < x < 50000000 else pass)

df['Classification']=df['Size'].apply(lambda x: "50-100m" if 50000000 < x < 100000000 else pass)

df['Classification']=df['Size'].apply(lambda x: "100-500m" if 100000000 < x < 500000000 else pass)

df['Classification']=df['Size'].apply(lambda x: "500m-1bi" if 500000000 < x < 1000000000 else pass)

df['Classification']=df['Size'].apply(lambda x: ">1bi" if 1000000000 < x else pass)

可以看出“pass”似乎也不适用于lambda函数:

df['Classification']=df['Size'].apply(lambda x: "<1m" if x<1000000 else pass)

SyntaxError: invalid syntax

关于Pandas中apply方法中lambda函数内多个if语句的正确synthax的任何建议?多线或单线解决方案对我有用.

这是一个可以构建的小例子:

基本上,lambda x:x ..是函数的短单行.真正需要的是一个你可以轻松重建的功能.

import pandas as pd

# Recreate the dataframe

data = dict(Size=[80000,8000000,800000000])

df = pd.DataFrame(data)

# Create a function that returns desired values

# You only need to check upper bound as the next elif-statement will catch the value

def func(x):

if x < 1e6:

return "<1m"

elif x < 1e7:

return "1-10m"

elif x < 5e7:

return "10-50m"

else:

return 'N/A'

# Add elif statements....

df['Classification'] = df['Size'].apply(func)

print(df)

返回:

Size Classification

0 80000 <1m

1 8000000 1-10m

2 800000000 N/A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值