【问题标题】:Find a value from a dataframe in another dataframe and print the row (Python)从另一个数据框中的数据框中查找一个值并打印该行(Python)
【发布时间】:2021-04-22 06:07:15
【问题描述】:

我之前发布过类似的问题,但我认为最好以另一种方式详细说明。例如,我有一个分配给数字的化合物数据框,如下所示:

复合,数字
17alpha_beta_SID_24898755,8
2_prolinal_109328,3
4_chloro_4491,37
5HT_144234_01,87
5HT_144234_02,2
6-OHDA_153466,23

此外,还有另一个具有其他属性的数据框以及化合物名称,但不仅具有相应的数字,而且在某些行中,化合物名称被分配给不同的数字 - 这些存在差异的情况并不感兴趣的:

rmsd,chemplp,plp,compound,number
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_prolinal_109328,3
0.17,54.58,-39.32,2_prolinal_109328,4
0.22,22.58,-32.35,2_prolinal_109328,5
0.41,45.32,-37.90,4_chloro_4491,37
0.11,15.32,-37.10,4_chloro_4491,38
0.11,15.32,-17.90,4_chloro_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,-2​​5.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

问题是我想从数据框 2 中的数据框 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 中的所有化合物及其对应的数字执行此操作。我给出的例子只是一个极其广泛的列表中的一小部分。如果有人可以帮忙,谢谢!

【问题讨论】:

    标签: python pandas dataframe numpy iteration


    【解决方案1】:

    看看df.merge方法:

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

    【讨论】:

    • 如果有帮助,请确保将此答案标记为正确:)
    猜你喜欢
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2021-09-19
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    相关资源
    最近更新 更多