【发布时间】:2020-10-15 16:39:28
【问题描述】:
我正在努力解决我确信是一个简单的问题。我有一个数据框,它的 1000 rows 是独一无二的。
这会按位置按类别显示expenses for the year。每个都有相同的类别组。
我想为每个站点的每项费用创建一个monthly budget 列。
我还想创建一个年初至今的预算列,该列将当年的总预算除以 12 以得出每月的数字。然后将其乘以月份(4 月 = 第 1 个月),得出年初至今的值 - 例如,5 月将是每月数字 * 2 等。
我正在尝试使用 pandas 来执行此操作。我试过了
pd.DataFrame(np.repeat(budget.values,12,axis=0)) #replicate each row by 12
然后我的计划是遍历每个组中的每一行以添加月份,但我正在努力实现任何目标。
任何帮助将不胜感激。
(抱歉我无法正确粘贴表格 - 请看图片)
当前
+------------+-------------+--------+
| Location | Expense | Amount |
+------------+-------------+--------+
| Sheffield | Electricity | 10000 |
| Sheffield | Gas | 12000 |
| Manchester | Electricity | 15000 |
| Manchester | Electricity | 13000 |
+------------+-------------+--------+
想要的
+------------+-------------+--------+--------+---------+-------+
| Location | Expense | Amount | Budget | Month | YTD |
+------------+-------------+--------+--------+---------+-------+
| Sheffield | Electricity | 10000 | 10000 | April | 1000 |
| Sheffield | Electricity | 10000 | 10000 | May | 2000 |
| Sheffield | Electricity | 10000 | 10000 | June | 3000 |
| Sheffield | Electricity | 10000 | 10000 | July | 4000 |
| Sheffield | Electricity | 10000 | 10000 | August | 5000 |
| Sheffield | Electricity | 10000 | 10000 | Sep | 6000 |
| Sheffield | Electricity | 10000 | 10000 | Oct | 7000 |
| Sheffield | Electricity | 10000 | 10000 | Dec | 8000 |
| Sheffield | Electricity | 10000 | 10000 | Jan | 9000 |
| Sheffield | Electricity | 10000 | 10000 | Feb | 10000 |
| Sheffield | Electricity | 10000 | 10000 | March | 11000 |
| Sheffield | Gas | 12000 | 20000 | April | 2000 |
| Sheffield | Gas | 12000 | 20000 | May | 4000 |
| Sheffield | Gas | 12000 | 20000 | June... | 6000 |
| Sheffield | Gas | 12000 | 20000 | ..March | 8000 |
| Manchester | Electricity | 15000 | 36000 | April | 4000 |
| Manchester | Electricity | 15000 | 36000 | May | 8000 |
+------------+-------------+--------+--------+---------+-------+
【问题讨论】:
-
请在文本表单中添加一些示例数据。
-
YTD 列的计算逻辑是什么?
-
@Grayrigel - 抱歉 - 我现在已使用文本形式重新发布
-
@Manakin - 年初至今由预算/12 计算,然后将其乘以月份列中的日历年。它本质上是将年度预算(预算列)划分为每月金额,然后在一年中累积 - 例如4 月年初至今 = 1*(预算/12),5 月年初至今 = 2*(预算/12),6 月年初至今 = 3*(预算/12)。 4 月是第 1 个月,因为这是财政年度的开始。非常感谢
标签: python pandas dataframe group-by