我有两个数据框,我需要使用第一个数据框向第二个数据框添加一个新列,如果它存在于第一个数据帧中,则其值为TRUE
。
第一个数据框具有美国大学城的州和地区名称
FALSE
第二个数据框的每季度增长率。它在State和RegionName上编入索引
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
非常感谢任何帮助
答案 0 :(得分:4)
其中一种可能的方法是使用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'))