如何在现有列上使用函数输出填充新列

2024-05-19 01:07:02 发布

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

我有一个数据,其中一列是名字。我想通过gender-guesser库传递名字,以获得对名字性别的最佳猜测。但是,当我试图创建一个新的“Gender”列并将“First Name”列中的数据传递给:

df_names['Gender'] = gender.Detector().get_gender(df_names['First Name'])

我知道错误了

^{pr2}$

我认为这与性别猜测者在幕后的所作所为有关,但我不能百分之百肯定。我得到了性别猜测者和熊猫的回溯。我可以将字符串传递给猜测者,并获得无问题的返回。我还可以编写自己的超级简单函数,将“名字”数据与另一个字符串连接起来,并获得有效的输出;例如:

def concat(x):
    return x+" something more"

df_names['More'] = concat(df_names['First Name'])  

这也和预期的一样,用匹配的内容创建一个新的列。在

我也能得到一个单一的,正确的,使用iloc返回。我已经可以让for循环工作,但它需要太长的时间来实现。在


Tags: 数据字符串namedfgetnames错误名字
2条回答

从来没用过性别检测仪,但我想这应该行得通

gd = gender.Detector()
df_names['Gender'] = df_names['First Name'].apply(gd.get_gender)

看起来您遇到了get_gender方法的实现细节,它很可能试图使用First Name作为字典的键,这将导致python调用first name对象的__hash__方法并抛出错误(可以看到in the code)。在

正如您已经在concat方法中观察到的,解决这个问题的关键可能是将first name对象转换为字符串:

df_names['Gender'] = gender.Detector().get_gender(
    str(df_names['First Name']) # make First Name a generic str instance
)

相关问题 更多 >

    热门问题