如何根据行索引的条件在熊猫数据框中删除行

时间:2019-10-31 13:15:53

标签: 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.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), 但显然'T:' in Prod.index的布尔内部方括号只返回一个false

2 个答案:

答案 0 :(得分:2)

您可以更改逻辑-如果索引值不包含或以T:开头,则获取所有行

因此使用~boolean indexing进行过滤,以使用str.contains来反转掩模:

df1 = Prod[~Prod.index.str.contains('T:')]

str.startswith

df1 = Prod[~Prod.index.str.startswith('T:')]

print (df1)
          electricity
carriers             
ETH_imp           0.0
ccgt      341239000.0

答案 1 :(得分:1)

您也可以使用Series.str.match

new_df=Prod[~Prod.index.str.match('T:')]
print(new_df)

          electricity
carriers             
ETH_imp           0.0
ccgt      341239000.0