str.contains在pandas数据帧中创建新列

mez*_*ezz 4 python dataframe python-3.x pandas

我正在探索巨大的数据集,并希望创建一个名称相似的列.例如,包含"Charles"的任何名称都将显示为"ch",因为我希望稍后使用这些名称来执行某些组.我使用以下代码创建了一个函数:

def cont(Name):
    for a in Name:
        if a.str.contains('Charles'):
            return('Ch')
Run Code Online (Sandbox Code Playgroud)

然后使用这个应用:

titanic['namest']=titanic['Name'].apply(cont,axis=1)
Run Code Online (Sandbox Code Playgroud)

错误: 'str' object has no attribute 'str'

notebook_link

EdC*_*ica 7

而不是使用循环,或者apply您可以使用vectorised str.contains返回布尔掩码并将满足条件的所有行设置为所需的值:

titanic.loc[titanic['Name'].str.contains('Charles'), 'namest'] = 'Ch'
Run Code Online (Sandbox Code Playgroud)