我正在研究一个基本的代码-我的目标是使用性别_猜谜器探测器查找数据帧中导入的文件(来自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就解决了这个问题——因为我已经知道了,我不知道为什么代码不能工作。 任何关于问题发生原因的帮助或解释都将是非常有帮助的。在
我不知道你为什么会犯那个错误。通常,最好避免逐行访问数据帧。下面的解决方案似乎可以使用lambda函数。在
它产生以下结果。在
^{pr2}$相关问题 更多 >
编程相关推荐