我正在使用泰坦尼克数据集,并创建了一系列的Famsize。我想创建第二个系列,如果famsize = 1则输出'single',如果1<'则输出'small'。 famsize< 5和'大'如果famsize> = 5。
Famsize FamsizeDisc
1 single
2 small
5 large
我尝试过使用np.where,但由于我有三个输出,我无法找到解决方案。
有什么建议吗?
答案 0 :(得分:2)
它被称为binning
所以使用pd.cut
即
df['new'] = pd.cut(df['Famsize'],bins=[0,1,4,np.inf],labels=['single','small','large'])
输出:
Famsize FamsizeDisc new 0 1 single single 1 2 small small 2 5 large large
答案 1 :(得分:1)
您可以创建一个执行映射的函数:
def get_sizeDisc(x):
if x == 1:
return 'single'
elif x < 5:
return 'small'
elif x >= 5:
return 'large'
df['FamsizeDisc'] = df.Famsize.apply(get_sizeDisc)
或者您可以使用.loc
df.loc[df.Famsize==1, 'FamsizeDisc'] = 'single'
df.loc[df.Famsize.between(1,5, inclusive = False), 'FamsizeDisc'] = 'small'
df.loc[df.Famsize>=5, 'FamsizeDisc'] = 'large'