我有以下数据帧:
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
我做错了什么
如果条件匹配,则在} 和选择第二个列表,否则添加错误的值(或
split
之后使用^{0
,需要什么):对名称列应用拆分函数。请尝试以下代码:
import numpy as np
df.apply(lambda x: x['Name'].split('|', 1)[-1] if x['Age'] > 16 and len(x['Name'].split('|',1))>1 else np.nan, axis=1)
相关问题 更多 >
编程相关推荐