【发布时间】:2021-05-05 13:18:04
【问题描述】:
我有一个数据框,我需要计算每个引擎的平均消耗量。
iterables = [['A123B'], ['2021-03-04 10:10:17', '2021-03-04 11:18:51', '2021-03-04 12:50:24',
'2021-03-04 13:02:02', '2021-03-04 14:37:23']]
control_id = [1, 2, 3, 4, 5]
index = pd.MultiIndex.from_product(iterables, names=["ENGINE_ID", "TIME"])
steps = [354815, 355160, 355428, 357850, 358314]
quantity = [156.32, 85.49, 100.00, 157.02, 134.00]
full = [1, 0, 0, 1, 0]
dict = {'CONTROL_ID':control_id, 'STEPS':steps, 'QUANTITY':quantity, 'FULL':full}
df = pd.DataFrame(dict, index=index)
| ENGINE_ID | TIME | CONTROL_ID | STEPS | QUANTITY | FULL |
|---|---|---|---|---|---|
| A123B | 2021-03-04 10:10:17 | 1 | 354815 | 156.32 | 1 |
| 2021-03-04 11:18:51 | 2 | 355160 | 85.49 | 0 | |
| 2021-03-04 12:50:24 | 3 | 355428 | 100.00 | 0 | |
| 2021-03-04 13:02:02 | 4 | 357850 | 157.02 | 1 | |
| 2021-03-04 14:37:23 | 5 | 358314 | 134.00 | 0 |
目标是计算发动机已满的步数之差除以数量之和。
与上表一样,考虑到 CONTROL_ID = 5,步骤之间的差异为 (357850 - 354815) = 3035,数量为 (85.49 + 100.00 + 157.02) = 342.51,平均消耗为 3035/342.51 = 8.86。在此示例中,预期结果将如下表所示。我有一个包含多个引擎和步骤的数据框。
| ENGINE_ID | TIME | CONTROL_ID | STEPS | QUANTITY | FULL | AVERAGE |
|---|---|---|---|---|---|---|
| A123B | 2021-03-04 10:10:17 | 1 | 354815 | 156.32 | 1 | 0 |
| 2021-03-04 11:18:51 | 2 | 355160 | 85.49 | 0 | 0 | |
| 2021-03-04 12:50:24 | 3 | 355428 | 100.00 | 0 | 0 | |
| 2021-03-04 13:02:02 | 4 | 357850 | 157.02 | 1 | 8.86 | |
| 2021-03-04 14:37:23 | 5 | 358314 | 134.00 | 0 | 0 |
如何计算并插入整个数据框的 AVERAGE 列?我在此处和 Pandas 文档中查找了类似的示例,但没有找到从哪里开始。
谢谢!
【问题讨论】: