我有两个如下所示的DataFrame-
我想执行以下操作-
我想从DF-A列TOTAL_NO_OF_RECORDS中获取所有值,并希望与DF-B列-Records以及DF-A列TOTAL_QUANTITY进行检查,并希望与DF-B列-Quantity一起检查,如果得到匹配,我需要打印DF-A的索引位置。
话虽如此,请参阅
DF-A中的行0 一个22142 309941.01
这与第二列中的DF-B匹配
22142 309941.01
因此,O / P为:0(DF-A的索引) DataFrame -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
DataFrame-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_OF_RECORDS和TOTAL_QUANTITY之间执行验证,并在每行上使用DatFrame-B(记录数量)。如果我找到比赛,我想获得将要获得比赛的INDEX / ROW号。 我正在使用以下代码
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]
,但未获得正确的索引位置。 我想要从DataFrame-A索引位置开始的期望输出
print(indices)
O/P: 0
O/P: 1
O/P: 4
O/P: 7
如果有人可以帮助,那将真的很有帮助。
答案 0 :(得分:1)
您似乎想要做的是在A和B之间找到两列匹配的行-为此,您可以使用.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])