Date 使用基于键的最新数据替换数据帧行

Date 使用基于键的最新数据替换数据帧行,date,pandas,dataframe,Date,Pandas,Dataframe,我有一个如下所示的数据帧: user_id val date 1 10 2015-02-01 1 11 2015-01-01 2 12 2015-03-01 2 13 2015-02-01 3 14 2015-03-01 3 15 2015-04-

我有一个如下所示的数据帧:

user_id      val        date
1            10         2015-02-01
1            11         2015-01-01
2            12         2015-03-01
2            13         2015-02-01
3            14         2015-03-01
3            15         2015-04-01
我需要运行一个函数,该函数按日期按时间顺序计算(比如)VAL的总和。如果用户有较新的日期,则使用该日期,如果没有,则保留较旧的日期

比如说。如果我在2015年3月15日运行该函数,则该表将为:

user_id      val        date
1            10         2015-02-01
2            12         2015-03-01
3            14         2015-03-01
user_id      val        date
1            10         2015-02-01
2            12         2015-03-01
3            15         2015-04-01
给我36英镑

如果我在2015年4月15日运行该函数,则该表将为:

user_id      val        date
1            10         2015-02-01
2            12         2015-03-01
3            14         2015-03-01
user_id      val        date
1            10         2015-02-01
2            12         2015-03-01
3            15         2015-04-01
(用户3的行已替换为最近的日期)

我知道这是相当深奥的,但我想我可以从你们所有人身上弹出来,因为我一直在想一个简单的方法来做这件事。

试试这个:

In [36]: df.loc[df.date <= '2015-03-15']
Out[36]:
   user_id  val       date
0        1   10 2015-02-01
1        1   11 2015-01-01
2        2   12 2015-03-01
3        2   13 2015-02-01
4        3   14 2015-03-01

In [39]: df.loc[df.date <= '2015-03-15'].sort_values('date').groupby('user_id').agg({'date':'last', 'val':'last'}).reset_index()
Out[39]:
   user_id       date  val
0        1 2015-02-01   10
1        2 2015-03-01   12
2        3 2015-03-01   14
[36]中的
df.loc[df.date]