如何找到变量列表的索引位置?

时间:2018-07-01 06:58:43

标签: python pandas dataframe

我是python的新手。我有一个数据框df_A,我想找出df_A中的Col1与list_B中的任何变量匹配的位置,然后删除这些行。即在以下示例中删除行0、2和4。有哪些可能的方法来实现?非常感谢。

[John, 23, 10, Team Leader]
[Christian Elverdam, 27, 7, Director]
[Niels Bye Nielsen, 59, 16, Composer]
[Rajkumar Hirani, 40, 23, Director]
[Vidhu Vinod Chopra, 58, 21, Screenplay]

1 个答案:

答案 0 :(得分:1)

isin用作布尔掩码,并用df_A.indexboolean indexing进行过滤:

idx = df_A.index[df_A['Col1'].isin(list_B)]
print (idx)
Int64Index([0, 2, 4], dtype='int64')

如果需要list

idx = df_A.index[df_A['Col1'].isin(list_B)].tolist()
print (idx)
[0, 2, 4]

详细信息

print (df_A['Col1'].isin(list_B))
0     True
1    False
2     True
3    False
4     True
Name: Col1, dtype: bool

用于按列表过滤所有行:

df1 = df_A[df_A['Col1'].isin(list_B)]
print (df1)
  Col1  Col2
0   AA     1
2   CC     3
4   AA     5

对于通过列表~反转布尔掩码来过滤出值:

df2 = df_A[~df_A['Col1'].isin(list_B)]
print (df2)
  Col1  Col2
1   BB     2
3   DD     4

详细信息

print (~df_A['Col1'].isin(list_B))
0    False
1     True
2    False
3     True
4    False
Name: Col1, dtype: bool