Python 3.x 如何在DataFrame中按条件获取所需行
我有一个数据框,索引是post_代码,它的值是名称和比例。我如何才能按字母顺序为每个post_代码获取一个药品名称?一些post_代码可能有多个“bnf_名称”,最大值的比率相同。在本例中,按字母顺序选择第一个“bnf_名称”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_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