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