Python 如何根据行索引上的条件删除数据帧中的行

Python 如何根据行索引上的条件删除数据帧中的行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个名为Prod的数据框,形状如下: carriers electricity techs ETH_imp 0.000000e+00 T:Arusha 1.786273e+06 T:Dar_es_Salaam 0.000000e+00 T:Dodoma 3.348339e+08 T:Geita 0.000000e+00 ccgt 3.412390e+08 因此,我的Prod.

我有一个名为Prod的数据框,形状如下:

carriers         electricity
techs   
ETH_imp          0.000000e+00
T:Arusha         1.786273e+06
T:Dar_es_Salaam  0.000000e+00
T:Dodoma         3.348339e+08
T:Geita          0.000000e+00
ccgt             3.412390e+08
因此,我的
Prod.index
结果是:

Index(['ETH_imp', 'T:Arusha', 'T:Dar_es_Salaam', 'T:Dodoma', 'T:Geita', 'ccgt'],
      dtype='object', name='techs')
我需要删除这些行,它们的索引包含字符串
'T:'

我尝试了
Prod=Prod.drop(Prod['T:'in Prod.index].index)

但是显然,Prod.index中的布尔值,
'T:'只返回一个
false
您可以更改逻辑-如果索引值不包含或以
T:
开头,则获取所有行

因此,使用
~
对反转遮罩进行过滤:

或:


你也可以使用


为了澄清,
Series.str.match
在这里工作得很好,因为
match
专门选择以模式开头的字符串。
df1 = Prod[~Prod.index.str.contains('T:')]
df1 = Prod[~Prod.index.str.startswith('T:')]
print (df1)
          electricity
carriers             
ETH_imp           0.0
ccgt      341239000.0
new_df=Prod[~Prod.index.str.match('T:')]
print(new_df)

          electricity
carriers             
ETH_imp           0.0
ccgt      341239000.0