获取数据框中存在的给定行的索引

Get indeces of given rows present in a dataframe

我有一个如下所示的数据框:

data = [[1, 10,100], [1.5, 15, 25], [7, 14, 70], [33,44,55]]
df = pd.DataFrame(data, columns = ['A', 'B','C'])

并且有这样的视觉表达

A    B    C
1    10   100
1.5  15   25
7    14   70
33   44   55

我还有其他数据,它是数据框中行的随机子集,所以像这样

set_of_rows = [[1,10,100], [33,44,55]]

我想获取指示 set_of_rows 中每一行在 df 中的位置的索引。所以我需要一个函数来做这样的事情:

indeces = func(subset=set_of_rows, dataframe=df)
In [1]: print(indeces)
Out[1]: [0, 3]

什么功能可以做到这一点?发送

尝试以下操作:

[i for i in df.index if df.loc[i].to_list() in set_of_rows]
#[0, 3]

如果你想要它作为一个函数:

def func(set_of_rows, df):
    return [i for i in df.index if df.loc[i].to_list() in set_of_rows]

你可以看看这个帖子; Python Pandas: Get index of rows which column matches certain value

据我所知,您的任务没有内置的 Panda 函数,因此迭代是唯一的解决方法。如果您担心处理错误,您可以在循环中添加条件来解决这个问题。

for i in df.index:
    lst = df.loc[i].to_list()
    if lst in set_of_rows:
       return i
    else:
       return None