【发布时间】:2017-03-22 22:15:36
【问题描述】:
想象一个像这样的 pandas DataFrame
date id initial_value part_value
2016-01-21 1 100 10
2016-05-18 1 100 20
2016-03-15 2 150 75
2016-07-28 2 150 50
2016-08-30 2 150 25
2015-07-21 3 75 75
生成如下
df = pd.DataFrame({
'id': (1, 1, 2, 2, 2, 3),
'date': tuple(pd.to_datetime(date) for date in
('2016-01-21', '2016-05-18', '2016-03-15', '2016-07-28', '2016-08-30', '2015-07-21')),
'initial_value': (100, 100, 150, 150, 150, 75),
'part_value': (10, 20, 75, 50, 25, 75)}).sort_values(['id', 'date'])
我希望添加一个列,其剩余值由 initial_value 定义的剩余值减去 part_value 的累积总和,条件是之前的 id 和日期。因此,我希望我的目标是
date id initial_value part_value goal
2016-01-21 1 100 10 100
2016-05-18 1 100 20 90
2016-03-15 2 150 75 150
2016-07-28 2 150 50 75
2016-08-30 2 150 25 25
2015-07-21 3 75 75 75
【问题讨论】:
-
你能解释更多
dates before吗?如果日期没有排序,输出不一样? -
你理解正确。排序事项
-
好的,那么必须先对值进行排序吗?还是对值进行排序?
-
我在创建示例时对它们进行了排序,因此可以假定它们已排序。不过很容易排序