如何解决在 Pandas 数据帧上运行 sql 查询
ID | 价格 | 区域 |
---|---|---|
1 | 23 | 澳大利亚 |
1 | 45 | DXB |
2 | 25 | 德国 |
2 | 18 | TUN |
ID | 价格 | 区域 |
---|---|---|
1 | 45 | DXB |
2 | 25 | TUN |
我尝试使用pandasql来获取输出,但它没有给出我想要的输出
我试过的代码是
import pandas as pd
import pandasql as ps
#to read table
df=pd.read_excel("test.xlsx")
ps.sqldf("select ID,max(Price),Region from df order by ID")
如果python本身有其他代码(不使用pandasql)可以得到上面的输出,请告诉我
解决方法
您可以使用groupby.transform
output_df = df[df['Price'].eq(df.groupby("ID")['Price'].transform("max"))]
或者 ps.sqldf
使用窗口函数获取最高价格,然后返回价格等于最高价格的行:
output_df = ps.sqldf("""select ID,Price,Region from
(select *,max(Price) over (partition by ID) max_Price from df)
where Price = max_Price""")
ID Price Region
0 1 45 DXB
1 2 25 GER
,
你可以这样做:
df.sort_values('Price').drop_duplicates('ID',keep='last')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。