将函数应用于datafram时,索引0处出现键错误

2024-09-26 18:16:04 发布

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

我正在研究一个基本的代码-我的目标是使用性别_猜谜器探测器查找数据帧中导入的文件(来自CSV)将丢失这些值的行的性别。为了简单起见,我在下面的代码中创建了一个虚拟的数据帧。在

我对Python还很陌生,而且还处于学习阶段,所以我认为对于我所要做的事情,肯定有更优雅的解决方案。我的想法是添加一个新的列,使用上面提到的函数找到每一行的值,然后填写NaN值,同时在适当的地方保留原始的gender值(完成后删除temp列)。 如果我手动将d.get_gender部分应用到特定行,并且Jupyter也接受该函数,那么d.get_gender部分就可以工作了。在

df = pd.DataFrame([['Adam','Smith',''],['Lindsay','Jackson','M'],['Laura','Jones','F'],['Arthur','Jackson','']] ,columns=['first_name','last_name','gender'])
import gender_guesser.detector as gender
df['newgender']=""

def findgender(dataframe):
    for row in dataframe:
        d = gender.Detector()
        df.loc[row, 'newgender'] = d.get_gender(df.loc[row,'first_name'])
    return df

df.apply(findgender, axis=1)

当我尝试将其应用于数据帧时,我收到一条冗长的错误消息,最后一行是 KeyError:('Adam','发生在索引0')

我试图在这里查找类似的帖子,但大多数情况下,添加axis=1就解决了这个问题——因为我已经知道了,我不知道为什么代码不能工作。 任何关于问题发生原因的帮助或解释都将是非常有帮助的。在


Tags: 数据函数代码namedataframedfgetgender
1条回答
网友
1楼 · 发布于 2024-09-26 18:16:04

我不知道你为什么会犯那个错误。通常,最好避免逐行访问数据帧。下面的解决方案似乎可以使用lambda函数。在

import pandas as pd
import gender_guesser.detector as gender


df = pd.DataFrame([['Adam','Smith',''],['Lindsay','Jackson','M'],['Laura','Jones','F'],['Arthur','Jackson','']] ,columns=['first_name','last_name','gender'])

df['newgender'] = df['first_name'].apply(lambda x: gender.Detector().get_gender(x))

它产生以下结果。在

^{pr2}$

相关问题 更多 >

    热门问题