我有以下数据框:
日期 | 成本 | 企业 | 车辆类型 | 价格 | 保险 | 日期_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 |
如何计算卡车的百分比并将其插入到新的结果列中?
与您已有的类似,只需过滤
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