pandas 无法实现np.select

bihw5rsg  于 2023-06-04  发布在  其他
关注(0)|答案(1)|浏览(133)
import pandas as pd
import numpy as np

df= pd.DataFrame(np.arange(10).reshape(-1,2), columns=['A','B'])
df
conditions=[ 
    (df['B']<3),
    (df['B']>=6 & df['B']<9),
    (df['B']>=9)
    ]
PE_Categories = ['Less than 3', '20-30', '9+']
df['PE_Categories']=np.select(conditions,PE_Categories)
df

我得到了以下错误:级数的真值是模糊的。使用.empty、.bool()、.item()、.any()或.all()。

6kkfgxo0

6kkfgxo01#

您需要在多个条件周围再加一个括号。在你的情况下((df['B']>=6) & (df['B']<9))
脚本应该是:

import pandas as pd
import numpy as np

df= pd.DataFrame(np.arange(10).reshape(-1,2), columns=['A','B'])
df
conditions=[ 
    (df['B']<3),
    ((df['B']>=6) & (df['B']<9)),
    (df['B']>=9)
    ]
PE_Categories = ['Less than 3', '20-30', '9+']
df['PE_Categories']=np.select(conditions,PE_Categories)
df

输出

A   B   PE_Categories
0   0   1   Less than 3
1   2   3   0
2   4   5   0
3   6   7   20-30
4   8   9   9+

相关问题