我有一个dataFrame,其中没有标题或列名。我想返回索引列表,其中在第三行或第二行(如果我们使用0索引)中存在某个字符串(“ A”或“ E”)。因此,一个简单的3行3列示例数据集是:
March April May
2019 2019 2019
A E F
我想返回[0,1],因为列0和1包含“ A”或“ E”。如何构造过滤查询以实现目标?
答案 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
这对大熊猫更友好。