我刚学习大熊猫并且今天遇到了这个问题:
我正在构建一个收集运行状况统计信息的简单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
答案 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