根据pandas中的键组合x行

时间:2017-04-01 18:22:30

标签: python pandas dataframe

我刚学习大熊猫并且今天遇到了这个问题:

我正在构建一个收集运行状况统计信息的简单df,每行代表每个用户一天的数据。我希望在数据框中看到每个用户的体重减轻。

以下是我的数据框示例:

_id     _rev    body_mass   calories    date    name    sleep   steps   team    token   ua_id
xxxx    yyyy    60          3100    4/1/2017    user1   7        2800   t2      xxxx    123423
xxxx    yyyy    58          3300    4/1/2017    user2   6        2900   t1      xxxx    123439
xxxx    yyyy    45          3300    4/2/2017    user2   6        3300   t1      xxxx    123439

我想要的是使用此信息创建的新df:

weight loss      name
0             user1
13            user2

1 个答案:

答案 0 :(得分:0)

首先按用户名和日期对数据框进行排序,以便每个用户的第一行引用最早的测量值:

df_sorted = df.sort_values(['name','date'])

然后按用户名对行进行分组,得到第一个(最早的)和最后一个(最近的)度量:

start = df_sorted.groupby('name').first()['body_mass']
end   = df_sorted.groupby('name').last()['body_mass']

现在,找到差异:

end - start

这是你的结果。

#name
#user1     0
#user2   -13
#Name: body_mass, dtype: int64