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

2024-06-02 07:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多索引数据帧:

                       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  ...

编写了以下内容(在Python Pandas: check if items from list is in df index中调整解决方案):

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

它不起作用。我的代码有错误吗?还是因为它是一个mulitindex df?有什么建议吗?谢谢


1条回答
网友
1楼 · 发布于 2024-06-02 07:26:00
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','')

相关问题 更多 >