Python Pandas:检查列表中的项目是否在 df 索引中,其中 df 是多索引 df

Python Pandas: check if items from list is in df index where df is a multiindex df

我有一个多索引数据框:

                       colname        ... TemporaryFix
ID1   ID2    ID3                              
a      NA    1         New Sector  ...             
b      NA    20        Market Sector  ...             
c      NA    5         Market Sector  ...             
d      NA    5         Other Sector  ...             
e      a27   55        Market Sector  ...             

我有一个列名和相应的索引列表。

cname = 'Market Sector'
lindex = [('b', NA, 20), ('d', NA, 5)

我想在 'TemporaryFix' 列中输入 'yes',其中索引在列表中并且 colname 等于 cname。

Desired output:
                       colname        ... TemporaryFix
ID1   ID2    ID3                               
a      NA    1         New Sector  ...             
b      NA    20        Market Sector  ... yes            
c      NA    5         Market Sector  ...             
d      NA    5         Other Sector  ...             
e      a27   55        Market Sector  ...

编写了以下内容(在 中调整解决方案):

df['TemporaryFix'] = np.where((df[(df.index.isin(lindex)) & (df['colname'] == cname)]),'yes','')

没用。我的代码有误还是因为它是 mulitindex df?有什么建议么?谢谢

cname = 'Market Sector'
lindex = [('b', pd.NA, 20), ('d', pd.NA, 5)]

尝试:

通过布尔掩码和 .loc 访问器

m=(df['colname'].eq(cname)) & (df.index.isin(lindex))
df.loc[m,'TemporaryFix']='yes'

通过np.where()

m=(df['colname'].eq(cname)) & (df.index.isin(lindex))
df['TemporaryFix']=np.where(m,'yes','')