Python 在for循环中使用多个过滤条件,并在匹配后获得数据帧的索引位置

Python 在for循环中使用多个过滤条件,并在匹配后获得数据帧的索引位置,python,pandas,indexing,Python,Pandas,Indexing,我有两个数据帧,如下- 我想执行以下操作- 我想从DF-A列的记录中获取所有值,并想检查DF-B列的记录以及DF-A列的总数量,还要检查DF-B列的数量,如果我得到匹配,我需要打印DF-A的索引位置 话虽如此,请参阅 DF-A中的第0行 a 22142309941.01 这与第二列中的DF-B匹配 22142309941.01 因此,O/p为:0(DF-A指数) 数据帧-A #PARTNER_NAME TOTAL_NO_OF_RECORDS TOTAL_QUANTITY a 22142

我有两个数据帧,如下-
我想执行以下操作-

我想从DF-A列的记录中获取所有值,并想检查DF-B列的记录以及DF-A列的总数量,还要检查DF-B列的数量,如果我得到匹配,我需要打印DF-A的索引位置

话虽如此,请参阅

DF-A中的第0行 a 22142309941.01

这与第二列中的DF-B匹配

22142309941.01

因此,O/p为:0(DF-A指数) 数据帧-A

#PARTNER_NAME   TOTAL_NO_OF_RECORDS TOTAL_QUANTITY
a   22142   309941.01
b   1719    34301.67
d   4376    345460.7
e   73723   2166729.41
c   2045    165651
f   307 1827993.54
b   1719    34301.67
c   2039    165674
数据帧-B

Records Quantity
2045    165651
22142   309941.01
17  312
2   300
640 9375.75
68  256
1719    34301.67
2899    219700.8707
451 6658.06
70  3179.24
776 6849.52
其中,我希望从DataFrame-B中提取数据,并希望在DataFrame-a列上的TOTAL_NO_记录和每行上带有DatFrame-B(记录数量)的TOTAL_数量之间执行验证。如果我得到一个匹配,我想得到我将得到匹配的索引/行号。 我正在使用下面的代码

for transaction_count,quantity_coun in zip(df_b.iloc[:,0], df_b.iloc[:,1]):
    indices = df_a.index[df_a['TOTAL_NO_OF_RECORDS'].all() == transaction_count and df_a['TOTAL_QUANTITY'] == quantity_count]
但是没有得到正确的索引位置。 我希望所需的输出作为-从数据帧-索引位置

print(indices)
O/P: 0
O/P: 1
O/P: 4
O/P: 7

如果有人能提供帮助,这将非常有用。

看来您要做的是在A和B之间找到两列匹配的行-为此,您可以使用A
.merge
。您需要从DataFrame A中删除索引,使其成为一列并可通过列选择访问,例如:

indices = df1.reset_index().merge(
    df2, 
    right_on=['Records', 'Quantity'], 
    left_on=['TOTAL_NO_OF_RECORDS', 'TOTAL_QUANTITY']
)['index'].values
这将为您提供:

array([0, 1, 6, 4])

预期的输出到底是什么?我想要索引位置,如果a在循环中得到匹配,我的意思是。。。你能提出你的问题来说明输出应该是什么样子以及为什么。。。从输入->输出的角度看,这会让它更清晰一些?应该采用谁的索引?如果两个DFs之间有多个匹配怎么办?您想知道B中
记录
存在于A的
总记录数
中的行的索引?如果我与DataFrame-B的行匹配,我想知道A行的索引位置。总记录数与总数量与DatFrame-B(记录和数量)之间的匹配