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

How to divide first number in a pandas series with the sum of all the numbers in a series in Python

我有一个 pandas 系列,看起来像这样..

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

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

这是你想要的吗?

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

您可以使用 python 字典来实现,如下所示,

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