根据另一个数据框的值向数据框中添加列。

3

我有两个数据框,需要使用第一个数据框将新列添加到第二个数据框,如果第一个数据框中存在,则为TRUE,否则为FALSE

第一个数据框包含USA大学城的州和地区名称。

    State    RegionName
  0 Alabama  Auburn
  1 Alabama  Florence
  2 Alabama  Jacksonville
  3 Illinois Chicago

第二个数据框显示每个季度的增长率,索引为州和地区名称。
                         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
抱歉,我应该已经提到了,但是我想看看是否有更符合 Python 风格的解决方案。 - Khurram Majeed
我理解,这就是为什么我点赞了这个答案。但是我添加了我的解决方案作为评论,以防您需要快速修复 :-) - Celebrian
1个回答

5

其中一种可能的方法是使用Index.isin方法,检查多级索引DF2对应的索引键是否作为各自的列存在于DF1中的两个级别。

然后,使用np.where进行分配操作(True),在满足创建的布尔掩码的&条件之后,否则为(False)。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接