Pandas SQL等效于更新,其中分组依据

亚瑟·伯哈特(Arthur Burkhardt)

尽管正在寻找这个,但我找不到正确的方法来获得与该查询等效的熊猫资源。

update product
  set maxrating = (select max(rating)
                   from rating
                   where source = 'customer'
                     and product.sku = rating.sku
                   group by sku)
  where maxrating is null;

大熊猫

product = pd.DataFrame({'sku':[1,2,3],'maxrating':[0,0,1]})
rating = pd.DataFrame({'sku':[1,1,2,3,3],'rating':[2,5,3,5,4],'source':['retailer','customer','customer','retailer','customer']})
expected_result = pd.DataFrame({'sku':[1,2,3],'maxrating':[5,3,1]})

的SQL

drop table if exists product;
create table product(sku integer primary key, maxrating int);
insert into product(maxrating) values(null),(null),(1);
drop table if exists rating; create table rating(sku int, rating int, source text);
insert into rating values(1,2,'retailer'),(1,5,'customer'),(2,3,'customer'),(2,5,'retailer'),(3,3,'retailer'),(3,4,'customer');
update product
  set maxrating = (select max(rating)
                   from rating
                   where source = 'customer'
                     and product.sku = rating.sku
                   group by sku)
  where maxrating is null;
select *
from product;

怎么做到呢?

最大容量

试试这个:

In [220]: product.ix[product.maxrating == 0, 'maxrating'] = product.sku.map(rating.groupby('sku')['rating'].max())

In [221]: product
Out[221]:
   maxrating  sku
0          5    1
1          3    2
2          1    3

或使用通用遮罩:

In [222]: mask = (product.maxrating == 0)

In [223]: product.ix[mask, 'maxrating'] = product.ix[mask, 'maxrating'].map(rating.groupby('sku')['rating'].max())

In [224]: product
Out[224]:
   maxrating  sku
0          5    1
1          3    2
2          1    3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在多个表上等效于SQL的Pandas

来自分类Dev

Python PANDAS:合并等效于“<= SQL Join

来自分类Dev

应用多种功能的 PANDAS 分组依据

来自分类Dev

根据Pandas中不同列的分组依据更新特定列的值

来自分类Dev

在Pandas Dataframe中的两列上进行分组依据,其中一列具有bins(范围)

来自分类Dev

SQL更新和分组依据

来自分类Dev

SQL与pandas'transform'等效吗?

来自分类Dev

R是否等效于Python的pandas.merge_asof?

来自分类Dev

Python-Pandas —如何检查DataFrame的分组依据?

来自分类Dev

重塑+分组依据并重命名pandas数据框

来自分类Dev

Pandas Dataframe分组依据,带有列表的列

来自分类Dev

Python-Pandas —如何检查DataFrame的分组依据?

来自分类Dev

在Pandas Dataframe中进行高级分组依据列创建

来自分类Dev

在Google BigQuery中分组依据

来自分类Dev

在 Pandas 中分组、计数和计算中位数

来自分类Dev

Pandas DataFrame 条件分组

来自分类Dev

SQL分组依据

来自分类Dev

SQL Datediff与分组依据

来自分类Dev

SQL Oracle(分组依据)

来自分类Dev

Oracle SQL分组依据

来自分类Dev

使用Pandas分组依据数据框中的第一行来计算累积差异

来自分类Dev

将索引信息带入PYthon Pandas Dataframe中的分组依据选择

来自分类Dev

使用Pandas分组依据数据框中的第一行来计算累积差异

来自分类Dev

使用合并(更新/插入)和分组依据的 SQL 存储过程

来自分类Dev

numpy,其中功能等效于熊猫

来自分类Dev

Python Pandas:SQL 计数/数字表的等效功能

来自分类Dev

Python Pandas更新/替换

来自分类Dev

Python Pandas 条件更新

来自分类Dev

更新 Pandas MultiIndex DataFrame