gpt4 book ai didi

python - Pandas : update a Dataframe's serie based on a larger Dataframe

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:05 25 4
gpt4 key购买 nike

我试图用 pandas 实现一些看似简单的东西,但经过几次不光彩的测试后我被卡住了。

事情是这样的。我有一个只有两个系列的 Dataframe(我们称它为街道):街道名称和与之相关的性别:

     name                             gender
0 Abraham Lincoln Avenue undefined
1 Donald Trump Dead End undefined
2 Hillary Clinton Street undefined
...
1754 Ziggy Marley Boulevard undefined

另一方面,我有另一个 Dataframe(我们称它为 fnames),非常非常大。它有四个系列:

       gender   gender_detail  main_gender      first_name
0 F Female Female Aaf
1 F Female Female Aafke
2 F Female Female Aafkea
3 M Male Male Aafko
...
40211 F Female Female Zyta

因此,正如您肯定已经猜到的那样,我会使用“first_name”系列 fnames 来检查其中一个名字是否出现在“name”系列街道中。

如果找到名字,我会更新街道中的“性别”系列,并使用名为“性别”的 fnames 系列的相关值。如果不是,我让'undefined'。

显然,由于 Dataframes 的大小,我不能使用两个 for 循环......有没有快速的解决方案来实现这一点?

例如,我是否应该创建一个仅以名字为键、以性别为值的字典以提高效率?

PS:我不知道它是否可以简化问题,但我的两个 Dataframes 按字母顺序排序!

最佳答案

是的,我认为您可以将 dictmap 一起使用按 split 拆分的列 name通过 whitespace 并通过 str[0] 选择第一个值,最后将 NaN 替换为 fillna :

print (df1)
name gender
0 Abraham Lincoln Avenue undefined
1 Donald Trump Dead End undefined
2 Hillary Clinton Street undefined
3 Aaf Street undefined
1754 Ziggy Marley Boulevard undefined

print (df2)
gender gender_detail main_gender first_name
0 F Female Female Aaf
1 F Female Female Aafke
2 F Female Female Aafkea
3 F Female Female Aafko
40211 F Female Female Zyta
d = df2.set_index('first_name')['gender'].to_dict()
print (d)
{'Zyta': 'F', 'Aaf': 'F', 'Aafkea': 'F', 'Aafke': 'F', 'Aafko': 'F'}

print (df1['name'].str.split().str[0])
0 Abraham
1 Donald
2 Hillary
3 Aaf
1754 Ziggy
Name: name, dtype: object

df1['gender'] = df1['name'].str.split().str[0].map(d).fillna('undefined')
print (df1)
name gender
0 Abraham Lincoln Avenue undefined
1 Donald Trump Dead End undefined
2 Hillary Clinton Street undefined
3 Aaf Street F
1754 Ziggy Marley Boulevard undefined

关于python - Pandas : update a Dataframe's serie based on a larger Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com