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

dxxyhpgq  于 2023-05-21  发布在  其他
关注(0)|答案(4)|浏览(134)

我有一个列表(list1),看起来像这样:

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

我还有一个 Dataframe (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
qeeaahzv

qeeaahzv1#

试试这样:

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

unguejic2#

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

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

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

bjg7j2ky3#

你可以试试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
m1m5dgzv

m1m5dgzv4#

试试这个:

All_index = list(df1.index.values)
Desired_list=[item for item in All_index if item not in list1]
df_filter=df1.filter(items=Desired_list, axis=0)

相关问题