计算2列分组后该列中的值所占的百分比

问题描述 投票:0回答:1

我有以下数据框:

日期 成本 企业 车辆类型 价格 保险 日期_M
0 2019-08-26 04:14:00 23719 0 汽车 25903 1 2019-08
1 2020-08-27 01:21:03 17159 0 卡车 24748 1 2020-08
2 2019-08-26 18:49:04 3629 0 卡车 11777 0 2019-08
3 2020-08-31 16:57:02 50738 1 汽车 51296 0 2020-08
4 2020-08-23 14:48:02 48173 0 卡车 56314 0 2020-08

no_insurance = df['Insurance'] == 0
df_no_insurance = df[no_insurance]
results = pd.DataFrame()
df_group = df_no_insurance.groupby((['Date_M','Corporate']))
results['Number of cars'] = df_group['Date'].count()
results['Доходность'] = np.round((df_group['Price'].sum() - df_group['Cost'].sum())/df_group['Price'].sum() * 100, 2)

结果

这是它们在控制台上的显示方式

汽车数量 盈利能力
数据_M 企业
2019-04 0 61 10.10
1 53 7.36
2019-05 0 68 8.44
1 68 8.61

如何计算卡车的百分比并将其插入到新的结果列中?

python pandas dataframe data-analysis
1个回答
0
投票

与您已有的类似,只需过滤

df_no_insurance
以仅保留卡车:

results["Number of trucks"] = (
    df_no_insurance.loc[df_no_insurance["Vehicle type"] == "truck"]
    .groupby((["Date_M", "Corporate"]))["Date"]
    .count()
)
results["Number of trucks"] = results["Number of trucks"].fillna(0).astype(int)

结果:

                   Number of cars  Доходность  Number of trucks
Date_M  Corporate                                              
2019-08 0                       1       69.19                 1
2020-08 0                       1       14.46                 1
        1                       1        1.09                 0
© www.soinside.com 2019 - 2024. All rights reserved.