从另一个数据帧中的数据帧中查找一个值并打印该行(Python)

从另一个数据帧中的数据帧中查找一个值并打印该行(Python),python,pandas,dataframe,numpy,iteration,Python,Pandas,Dataframe,Numpy,Iteration,我以前也曾发布过类似的问题,但我认为最好用另一种方式来阐述。例如,我将一个化合物数据框分配给一个数字,如下所示: 化合物,数字 17alpha_beta_SID_24898755,8 2_prolinal_109328,3 4-氯-4491,37 5HT_144234_01,87 5HT_144234_02,2 6-OHDA_153466,23 此外,还有另一个具有其他属性以及复合名称的数据框,但不仅具有其相应的编号,还有将复合名称分配给不同编号的行-这些存在差异的情况并不重要: rmsd、化学

我以前也曾发布过类似的问题,但我认为最好用另一种方式来阐述。例如,我将一个化合物数据框分配给一个数字,如下所示:

化合物,数字
17alpha_beta_SID_24898755,8
2_prolinal_109328,3
4-氯-4491,37
5HT_144234_01,87
5HT_144234_02,2
6-OHDA_153466,23

此外,还有另一个具有其他属性以及复合名称的数据框,但不仅具有其相应的编号,还有将复合名称分配给不同编号的行-这些存在差异的情况并不重要:

rmsd、化学plp、plp、化合物、编号 1.00,14.00,-25.00,17alpha_beta_SID_24898755,7
0.38,12.00,-19.00,17alpha_beta_SID_24898755,8
0.66,16.00,-25.6,17alpha_beta_SID_24898755,9
0.87,24.58,-38.35,2_脯氨酸_109328,3
0.17,54.58,-39.32,2_脯氨酸_109328,4
0.22,22.58,-32.35,2_脯氨酸_109328,5
0.41,45.32,-37.90,4-氯-4491,37
0.11,15.32,-37.10,4-氯-4491,38
0.11,15.32,-17.90,4-氯-4491,39
0.61,38.10,-45.86,5HT_144234_01,85
0.62,18.10,-15.86,5HT_144234_01,86
0.64,28.10,-25.86,5HT_144234_01,87
0.64,16.81,-10.87,5HT_144234_02,2
0.14,16.11,-10.17,5HT_144234_02,3
0.14,16.21,-10.17,5HT_144234_02,4
0.15,31.85,-24.23,6-OHDA_153466,23
0.13,21.85,-34.23,6-OHDA_153466,24
0.11,11.85,-54.23,6-OHDA_153466,25

问题是我想从dataframe 2中的dataframe 1中找到每个化合物及其对应的数字,并返回其整行

我只能做到这一点(但由于本例中的迭代方式,它无法实现我的目标): 将numpy作为np导入 导入csv 作为pd进口熊猫

    for c1,n1,c2,n2 in zip(df1.compound,df1.number,df2.compound,df2.number):

            if c1==c2 and n1==n2:

                   print(df2[*])
  • 我想打印c1==c2和n1==n2的整行
示例:对于数据帧1中的17alpha_beta_SID_24898755(化合物)8(其编号),返回在数据帧2中找到该化合物和该编号的行。结果应该是:

0.38,12.00,-19.00,17alpha_beta_SID_24898755,8


我想对dataframe1中的所有化合物及其对应的数字执行此操作。我举的例子只是一个非常广泛的列表中的一小部分。如果有人能帮忙,谢谢

看看
df.merge
方法:

df1.merge(df2, on=['compound', 'number'], how='inner')

它工作得很好,谢谢你!如果有帮助,请确保将此答案标记为正确:)