根据来自另一个数据帧的值将列添加到数据帧
问题描述:
我有两个数据帧,我需要使用第一个数据帧向第二个数据帧添加一个新列,如果它存在于第一个数据帧中,则其值为TRUE
否则FALSE
。根据来自另一个数据帧的值将列添加到数据帧
第一数据帧具有州立大学和城镇地区名称在美国
State RegionName
0 Alabama Auburn
1 Alabama Florence
2 Alabama Jacksonville
3 Illinois Chicago
第二个数据帧具有每季度的增长率。它收录在国家和RegionName
2008q3 2008q4
State RegionName
Alabama Jacksonville 499766.666667 487933.333333
California Los Angeles 469500.000000 443966.666667
Illinois Chicago 232000.000000 227033.333333
所以输出数据帧将
2008q3 2008q4 univ_town
State RegionName
Alabama Jacksonville 499766.666667 487933.333333 TRUE
California Los Angeles 469500.000000 443966.666667 FALSE
Illinois Chicago 232000.000000 227033.333333 TRUE
任何帮助将是非常赞赏
答
一个各种可能的方式做是使用Index.isin
方法来检查对应于多索引DF2
的索引键是否存在跨两个级别的DF1
中的相应列。
然后使用np.where
创建布尔面具的&
条件后做赋值操作(真)得到满足,否则(假)。
cond1 = df2.index.isin(df1['State'], level=0) # Check level=0 and df1['State']
cond2 = df2.index.isin(df1['RegionName'], level=1) # Check level=1 and df1['RegionName']
df2.assign(univ_town=np.where(cond1 & cond2, 'TRUE', 'FALSE'))
这一个是从Coursera介绍数据科学...我只是完成了该课程。您不需要执行所描述的内容,只需执行内部合并即可获得university_towns数据框,然后在all_towns和university_towns数据框之间区别。查看pandas index.difference函数 – Celebrian
对不起,我应该提到我已经完成了,但是我试图看看是否有更多pythonic解决方案。 –
我明白了,这就是为什么我高举了答案。但是,如果您需要快速修复,请添加我的解决方案作为评论:-) – Celebrian