首页 > 解决方案 > 如何在 Python 中编写函数以获取行值占分组总值的百分比?

问题描述

我有一个包含以下列的数据框:

    Date    | Origin  | Destination | Service | Demand
    April 4 | Chicago | Toronto     | Ground  |250
    April 4 | Chicago | Tampa       | Ground  |250
    April 5 | Chicago | Orlando     | Air     |100
    April 5 | Chicago | Seattle     | Air     |400

我想用 Python 编写一个函数或使用 pandas 函数来获取“日期”和“起源”的需求列占总数的百分比

因此,如果我有以下 groupby:

  df.groupby(['Date','Origin'])['Demand'].sum().reset_index() 

给我以下内容:

         Date    | Origin  | Demand
         April 4 | Chicago | 500
         April 5 | Chicago | 500

我想要的输出是:

    Date    | Origin  | Destination | Service | Demand | Percentage
    April 4 | Chicago | Toronto     | Ground  |250     | 0.5
    April 4 | Chicago | Tampa       | Ground  |250     | 0.5
    April 5 | Chicago | Orlando     | Air     |100     | 0.2
    April 5 | Chicago | Seattle     | Air     |400     | 0.8

我将如何写一些能给我百分比列的东西?

标签: pythonpandasdataframepandas-groupby

解决方案


检查与transform

df['Pct']=df['Demand']/df.groupby(['Date', 'Origin'])['Demand'].transform('sum')

推荐阅读