Python获取具有匹配值的列的索引

时间:2020-02-05 23:10:34

标签: python dataframe

我有一个dataFrame,其中没有标题或列名。我想返回索引列表,其中在第三行或第二行(如果我们使用0索引)中存在某个字符串(“ A”或“ E”)。因此,一个简单的3行3列示例数据集是:

March          April          May
2019           2019           2019
A              E              F

我想返回[0,1],因为列0和1包含“ A”或“ E”。如何构造过滤查询以实现目标?

3 个答案:

答案 0 :(得分:1)

这可能与您要查找的不完全相同,但是我不会使用过滤器查询。我会这样做,因为您已经知道感兴趣行的索引位置是2。

import pandas as pd
import numpy as np

df = pd.DataFrame({0: {0: 'March', 1: 2019, 2: 'A'},
 1: {0: 'April', 1: 2019, 2: 'E'},
 2: {0: 'May', 1: 2019, 2: 'F'}})


indices = np.where(df.iloc[2,:].isin(['A', 'E']))

这将产生一个{0, 1}元组

答案 1 :(得分:1)

我会尝试的。

##get test data
list1 = ['MAY',2019,'A']
list2 = ['MAY',2019,'E']
list3 = ['MAY',2019,'Q']

test_df = pd.DataFrame(zip(list1,list2,list3))

third_row = test_df.iloc[2]
third_row[third_row.str.contains('A|E')].index.tolist()

答案 2 :(得分:0)

为什么不这样做:

df[(df=='A') | (df=='E')].dropna(how='all').index

这对大熊猫更友好。