2016-12-29 187 views
2

我有两个数据帧,我需要使用第一个数据帧向第二个数据帧添加一个新列,如果它存在于第一个数据帧中,则其值为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 

任何帮助将是非常赞赏

+1

这一个是从Coursera介绍数据科学...我只是完成了该课程。您不需要执行所描述的内容,只需执行内部合并即可获得university_towns数据框,然后在all_towns和university_towns数据框之间区别。查看pandas index.difference函数 – Celebrian

+0

对不起,我应该提到我已经完成了,但是我试图看看是否有更多pythonic解决方案。 –

+0

我明白了,这就是为什么我高举了答案。但是,如果您需要快速修复,请添加我的解决方案作为评论:-) – Celebrian

回答

4

一个各种可能的方式做是使用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')) 

enter image description here

相关问题