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','')
我有一个多索引数据框:
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','')