我有一份数据
name date quantity
'A' 2016-12-02 20
'A' 2016-12-04 5
'A' 2016-11-30 10
'B' 2016-11-30 10
...我想要做的是,对任意一对连续的日期(按时间顺序计算),计算名称的数量差异和这些计数的平均值。
日期不一定是按时间顺序排列的。
具体来说,对于名称A,我需要计算+10 (差异为12月2日至11月30日)和-15 (差异为12月4日至11月2日),然后对它们进行平均,得到这个名称的最终结果为-2.5。
想法?
发布于 2016-12-08 11:32:33
可以将groupby和apply diff与mean结合使用。
print (df.groupby('name')['quantity'].apply(lambda x: x.diff().mean()).reset_index())
name quantity
0 'A' -2.5
1 'B' NaN编辑:您可以按列添加sort_values date
print (df.sort_values('date')
.groupby('name')['quantity']
.apply(lambda x: x.diff().mean())
.reset_index())
name quantity
0 'A' -2.5
1 'B' NaNhttps://stackoverflow.com/questions/41038400
复制相似问题