Khu*_*eed 3 python dataframe pandas
我有两个数据帧,我需要使用第一个数据帧向第二个数据帧添加一个新列,TRUE如果它存在于第一个数据帧 else 中,则该列具有一个值FALSE。
第一个数据框包含美国大学城的州和地区名称
State RegionName
0 Alabama Auburn
1 Alabama Florence
2 Alabama Jacksonville
3 Illinois Chicago
Run Code Online (Sandbox Code Playgroud)
第二个数据帧具有每季度的增长率。它在 State 和 RegionName 上建立索引
2008q3 2008q4
State RegionName
Alabama Jacksonville 499766.666667 487933.333333
California Los Angeles 469500.000000 443966.666667
Illinois Chicago 232000.000000 227033.333333
Run Code Online (Sandbox Code Playgroud)
所以输出数据帧将是
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
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激
各种可能的方法之一是使用Index.isinmethod 来检查与多索引对应的索引键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'))
Run Code Online (Sandbox Code Playgroud)