我试图根据像这样的数据框架中人的大小来推断分类。
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<x<10000000 else ...)
我查了一些关于lambda函数中多个if的帖子。这里有一个例子链接但是,由于某些原因,在多个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
对于潘达斯应用方法中λ函数内的多条if语句,有什么正确的协同方法建议吗?多行或单行的解决方案对我都适用。