2017-10-05 137 views
0

我正在使用泰坦尼克號數據集並創建了一系列Famsize。我想創建第二個系列,如果famsize = 1,則輸出'單';如果輸入'<',則輸出'小',如果famsize> = 5,則輸出'大'。熊貓使用條件創建系列

Famsize FamsizeDisc 
    1   single 
    2   small 
    5   large 

我試過使用np.where但是因爲我有三個輸出我一直沒有找到解決方案。

有什麼建議嗎?

+1

確實分享了迄今爲止嘗試的內容。 – parth

回答

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

要麼你可以創建一個函數,它不映射:

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' 
+1

這可以使用'pd.cut'在一行中完成。 – Dark

+0

答案已更新。 –

+0

但我補充說,作爲一個答案:( – Dark