Python 3.x 如何在DataFrame中按条件获取所需行

Python 3.x 如何在DataFrame中按条件获取所需行,python-3.x,pandas,Python 3.x,Pandas,我有一个数据框,索引是post_代码,它的值是名称和比例。我如何才能按字母顺序为每个post_代码获取一个药品名称?一些post_代码可能有多个“bnf_名称”,最大值的比率相同。在本例中,按字母顺序选择第一个“bnf_名称” post_code bnf dev TR1 3ER Senna_Tab 7.5mg 0.33 TR1 3ER Oxybutynin HCl_Tab 2.5mg

我有一个数据框,索引是post_代码,它的值是名称和比例。我如何才能按字母顺序为每个post_代码获取一个药品名称?一些post_代码可能有多个“bnf_名称”,最大值的比率相同。在本例中,按字母顺序选择第一个“bnf_名称”

  post_code        bnf                        dev
  TR1 3ER  Senna_Tab 7.5mg                   0.33
  TR1 3ER  Oxybutynin HCl_Tab 2.5mg          0.33
  B26 1TH  Betnesol_Ear/Eye/Nose Dps 0.1%    0.16
  B26 1TH  Amoxicillin_Cap 500mg             0.16
预期结果:

   post_code        bnf                            dev
  TR1 3ER     Oxybutynin HCl_Tab 2.5mg             0.33
  B26 1TH     Amoxicillin_Cap 500mg                0.16

您可能首先希望通过索引post_代码和bnf列,然后在保留第一次出现的情况下使用:

df = df.sort_values(by=['post_code', 'bnf'])
df = df.drop_duplicates(subset=['post_code'], keep='first')

您可能首先希望通过索引post_代码和bnf列,然后在保留第一次出现的情况下使用:

df = df.sort_values(by=['post_code', 'bnf'])
df = df.drop_duplicates(subset=['post_code'], keep='first')

对于相同的post_代码,您有多个bnf,但具有不同的dev值?对于相同的post_代码,您有多个bnf,但具有不同的dev值?谢谢,但这不是排序,并保留每个“post_代码”的最大“开发”值。我不确定我是否理解。我的答案不是按“dev”排序,而是先按“post_code”排序,然后按“bnf”排序。忽略“dev”值。也许我误解了你的问题。你运行代码了吗?错误的结果?我刚刚修改了你的代码并得到了结果。非常感谢你!你改变了什么?因此,我可以更正答案。只需将“bnf”更改为“dev”,并将升序设置为false谢谢,但这不是排序,并保留每个“post_code”的最大“dev”值,我不确定我是否理解。我的答案不是按“dev”排序,而是先按“post_code”排序,然后按“bnf”排序。忽略“dev”值。也许我误解了你的问题。你运行代码了吗?错误的结果?我刚刚修改了你的代码并得到了结果。非常感谢你!你改变了什么?所以我可以更正答案。只需将“bnf”更改为“dev”,并将升序设置为False