如何将pandas系列中的第一个数字除以Python中一系列中所有数字的总和

时间:2015-12-09 10:47:30

标签: python pandas series

我有一个看起来像这样的熊猫系列..

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

我的逻辑有问题吗?请帮忙

2 个答案:

答案 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次,第一次计算这个代码仍然可以通过使用列表理解来简化。