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

2024-04-19 10:13:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉。我有一个数据帧df\u a,我想找出df\u a中的Col1与list\u B中的任何变量匹配的位置,然后删除这些行。i、 e.删除下例中的第0、2和4行。实现这一目标的可能途径是什么?非常感谢。你知道吗

df_A = pd.DataFrame({'Col1': ['AA', 'BB', 'CC', 'DD', 'AA'], 'Col2': [1, 2, 3, 4, 5]})
list_B = ('AA','CC')

Tags: 数据目标dataframedfddlist途径col2
1条回答
网友
1楼 · 发布于 2024-04-19 10:13:25

使用^{}作为布尔掩码,并通过^{}df_A.index进行过滤:

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

相关问题 更多 >