如何根据单独列表中的索引值过滤数据框?

时间:2018-04-18 12:16:32

标签: python pandas

我有一个列表(list1),如下所示:

  ['loc1','loc3','loc6'.....]

我还有一个如下所示的数据框(df1):

        Values    Proportion
loc1    200          10
loc2    50           20
loc3    100          30
loc4    60           45
loc5    70           12
loc6    80           11
loc7    10           10
.... 

我想删除数据框中索引与列表中的值匹配的行。结果输出文件:

        Values    Proportion
loc2    50           20
loc4    60           45
loc5    70           12
loc7    10           10
.... 

我的解决方案是(但不起作用)。

reduced_file = set(df1.index) - list1

3 个答案:

答案 0 :(得分:3)

试试这样:

df.loc[~df.index.isin(list1)]

答案 1 :(得分:1)

使用pandas.Index.difference创建一个新索引,它是现有索引与要删除的索引列表之间的设置差异。

df.loc[df.index.difference(list1)]

      Values  Proportion
loc2      50          20
loc4      60          45
loc5      70          12
loc7      10          10

答案 2 :(得分:1)

您可以尝试reindex

df.reindex([x for x in df.index if x not in  ['loc1','loc3','loc6']])
Out[946]: 
      Values  Proportion
loc2      50          20
loc4      60          45
loc5      70          12
loc7      10          10