Pandas 如何删除多索引数据帧中的特定行

Pandas 如何删除多索引数据帧中的特定行,pandas,multi-index,Pandas,Multi Index,我想删除与“技术”部门相关的行,其中alpha向量值为负值。该索引由两部分组成,0级“日期”和1级“资产” alpha_vector sector date asset 2019-06-28 00:00:00+00:00 A 1.218573 Healthcare AA 1.247386 Basic Materials

我想删除与“技术”部门相关的行,其中alpha向量值为负值。该索引由两部分组成,0级“日期”和1级“资产”

                             alpha_vector   sector
date    asset       
2019-06-28 00:00:00+00:00   A     1.218573  Healthcare
                            AA    1.247386  Basic Materials
                            AAL   1.842296  Industrials
                            AAP   -0.713696 Consumer Cyclical
                            AAPL  3.370962  Technology
                            AAXN  -1.892290 Industrials
                            ABB   1.525332  Industrials
                            ABBV  4.647228  Healthcare
                            ABC   1.421925  Healthcare
                            ABMD  3.130564  Healthcare
                            ABT   -6.842299 Healthcare
                            ACAD  -2.015420 Healthcare
                            ACC   0.448264  Real Estate
                            ACGL  -1.179464 Financial Services
                            ACIA  2.839611  Technology

... ... ... ...
2020-06-26 00:00:00+00:00   WRK   5.098169  Consumer Cyclical
                            WSM   -8.620308 Consumer Cyclical
                            WSO   -9.874210 Industrials
                            WST   -10.74130 Healthcare
                            WU    1.267384  Financial Services
                            WWD   3.379096  Industrials
                            WWE   -0.766277 Consumer Cyclical
226296行×2列

我试过这个:

for date in df.index.levels[0]:
    for ticker in  df.index.levels[1]:
        if (df.loc[(date,ticker),'sector'] == 'Technology') and (df.loc[(date,ticker),'alpha_vector'] < 0):
            df.drop((date,ticker),inplace =True)
df.index.levels[0]中日期的
:
对于df.index.levels[1]中的股票代码:
如果(df.loc[(日期,股票代码),“扇区”]=“技术”)和(df.loc[(日期,股票代码),“alpha_向量”]<0):
df.drop((日期,股票代码),原地=真)

但是执行时间太长。

看起来您需要根据条件进行选择:

drop_rows_condition = (df.sector == 'Technology') & (df.alpha_vector < 0)
df = df[ ~drop_rows_condition ]
drop_rows_condition=(df.sector='Technology')&(df.alpha_vector<0)
df=df[~删除行\条件]

是否显示您的示例数据?