根据来自另一个数据帧的值将列添加到数据帧

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)

任何帮助将不胜感激

Nic*_*eli 5

各种可能的方法之一是使用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)

在此处输入图片说明