结构包含在pandas datafram中创建新列

2024-04-27 20:35:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在探索泰坦尼克号的数据集,想创建一个名称相似的列。例如,任何包含“Charles”的名称都将显示为“ch”,因为我想在以后使用这些名称进行分组。 我使用以下代码创建了一个函数:

def cont(Name):
    for a in Name:
        if a.str.contains('Charles'):
            return('Ch')

然后用这个:

^{pr2}$

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

notebook_link


Tags: 数据函数代码namein名称forreturn
2条回答

apply将调用cont函数,并从Name列中逐个值地向它传递一个值。这意味着cont函数中的Name变量已经是一个字符串。在

还要注意,apply使用的每个函数都必须返回一些值,因此如果名称不包含“Charles”,则返回名称本身。在

同样2,Seriesapply方法没有axis关键字参数。在

def cont(Name):
    if 'Charles' in Name:
        return 'Ch'
    return Name

你甚至不需要定义它:

^{pr2}$

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

titanic.loc[titanic['Name'].str.contains('Charles'), 'namest'] = 'Ch'

相关问题 更多 >