Python 根据特定条件应用拆分

Python 根据特定条件应用拆分,python,pandas,lambda,split,Python,Pandas,Lambda,Split,我有以下数据帧: data = {'Name': ['Peter | Jacker', 'John | Parcker', 'Paul | Cash', 'Tony'], 'Age': [10, 45, 14, 65]} df = pd.DataFrame(data) 我想提取的是只有年满16岁的人的昵称(字符“|”后的单词)。为此,我使用以下代码: df['nickname'] = df.apply(lambda x: x.str.split('|', 1)[-1] if x

我有以下数据帧:

data = {'Name': ['Peter | Jacker', 'John | Parcker', 'Paul | Cash', 'Tony'],
        'Age': [10, 45, 14, 65]}
df = pd.DataFrame(data)
我想提取的是只有年满16岁的人的昵称(字符“|”后的单词)。为此,我使用以下代码:

df['nickname'] = df.apply(lambda x: x.str.split('|', 1)[-1] if x['Age'] > 16 else 0, axis=1)
但是,当我打印昵称时,我只得到以下结果:

     Name      Age  nickname
Peter | Jacker  10   0.0     
John | Parcker  45  NaN      
Paul | Cash     14   0.0     
Tony            65  NaN  
我想要的是:

     Name      Age  nickname
Peter | Jacker  10   NaN    
John | Parcker  45   Parcker      
Paul | Cash     14   NaN     
Tony            65   NaN 
我做错了什么?

如果条件匹配,则在拆分后与选择秒列表一起使用,否则添加错误值(或
0
,需要什么):


对名称列应用拆分函数。请尝试以下代码:

将numpy作为np导入

df.apply(λx:x['Name'].split('|',1)[-1]如果x['Age']>16和len(x['Name'].split('|',1))>1 else np.nan,axis=1)

df['nickname'] = np.where(df['Age'] > 16, df['Name'].str.split('|', 1).str[1] , np.nan)
print (df)
             Name  Age  nickname
0  Peter | Jacker   10       NaN
1  John | Parcker   45   Parcker
2     Paul | Cash   14       NaN
3            Tony   65       NaN
             Name  Age  nickname
0  Peter | Jacker   10       NaN
1  John | Parcker   45   Parcker
2     Paul | Cash   14       NaN
3            Tony   65       NaN