我有一个看起来像这样的熊猫系列..
dish_name
Chiken Biryani 3
Mutton Biryani 1
Paneer Biryani 4
Paneer Pulav 2
sandwitch 2
我想通过其余的菜肴数量来计算第一道菜的分数。所以它应该是......第一个元素(3 /(3 + 1 + 4 + 2 + 2)然后第二个元素(1 /(3+) 1 + 4 + 2 + 2)等等到最后一个元素.. 这就是我正在做的事情
def dish_push(dish_data):
dish_number = len(dish_data)
for i in range(0,dish_number):
dish = (dish_data[i])/(dish_data[0:dish_number].sum())
print dish
但它没有给我想要的结果..我想要的是
dish_name
Chiken Biryani 0.25
Mutton Biryani 0.083
Paneer Biryani 0.33
Paneer Pulav 0.16
sandwitch 0.16
我的逻辑有问题吗?请帮忙
答案 0 :(得分:2)
这是你想要的吗?
print(s/s.sum())
Chiken Biryani 0.250000
Mutton Biryani 0.083333
Paneer Biryani 0.333333
Paneer Pulav 0.166667
sandwitch 0.166667
dtype: float64
答案 1 :(得分:0)
你可以使用python dict来实现,如下所示,
def dish_push(dish_data):
dish_number = len(dish_data)
total=0
for key in dish_data:
total+=dish_data[key]
for key in dish_data:
dish_val = (float(dish_data[key])/float(total))
print key + " " + str(dish_val)
dish_data={"chicken Briyani":3,
"Mutton Biryani":1,
"Paneer Briyani":4,
"Paneer Pulav":2,
"sandwitch":2
}
#main
dish_push(dish_data)
===================================
Paneer Briyani 0.333333333333
chicken Briyani 0.25
Mutton Biryani 0.0833333333333
sandwitch 0.166666666667
Paneer Pulav 0.166666666667
这里我循环2次,第一次计算这个代码仍然可以通过使用列表理解来简化。