我有两个数据框(菜单和订单),我想根据菜单数据框的流行程度(它在“订单”数据框中出现的次数)来标记菜单数据框中的项目
import pandas as pd
menu = pd.DataFrame(
{'Item_Name':['Chicken Pizza','Mushroom Soup','Tiramisu'],
'Price':[8.99, 4.99, 5.99]})
orders = pd.DataFrame(
{'order':[1,2,3,4,5,6,7,8],
'Item Name':['Chicken Pizza','Mushroom Soup','Tiramisu','Chicken Pizza','Chicken Pizza','Mushroom Soup','Chicken Pizza','Tiramisu']})
菜单
Item_Name Price
0 Chicken Pizza 8.99
1 Mushroom Soup 4.99
2 Tiramisu 5.99
命令
order Item Name
0 1 Chicken Pizza
1 2 Mushroom Soup
2 3 Tiramisu
3 4 Chicken Pizza
4 5 Chicken Pizza
5 6 Mushroom Soup
6 7 Chicken Pizza
7 8 Tiramisu
期望输出: 如果订购的物品超过所有订购物品的中位数,则为“1”;如果少于或等于订购次数的中位数,则为“0”
Item_Name Price Popular
0 Chicken Pizza 8.99 1
1 Mushroom Soup 4.99 0
2 Tiramisu 5.99 0
我尝试过使用这种语法,但不起作用
menu["Popular"] = lambda x: 1 if orders["Item Name"].count() > orders["Item Name"].median() else 0
您可以
groupby
“Item Name”+size
对项目进行计数,然后计算中位数并查找大于(gt
)的元素。输出为布尔值,通过更改类型将其转换为int。最后merge
使用“菜单”显示0/1的输出序列:输出:
我们需要^{} 来获得每个项目的编号。然后我们可以将其与计数的^{} 而不是整个数据帧进行比较,将真/假值转换为1/0(^{} ),并将^{} 返回到
Item_Name
列上的menu
:或者用^{} 代替
groupby count
:任何一种方法都会得到
menu
:相关问题 更多 >
编程相关推荐