python - Pandas 数据帧中任意两连续行之间差异的平均值

标签 python pandas dataframe

我有一个数据框

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。

想法?

最佳答案

您可以使用groupby申请 diffmean :

print (df.groupby('name')['quantity'].apply(lambda x: x.diff().mean()).reset_index())
  name  quantity
0  'A'      -2.5
1  'B'       NaN

编辑:您可以添加 sort_values按列日期

print (df.sort_values('date')
         .groupby('name')['quantity']
         .apply(lambda x: x.diff().mean())
         .reset_index())
  name  quantity
0  'A'      -2.5
1  'B'       NaN

关于python - Pandas 数据帧中任意两连续行之间差异的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41038400/

相关文章:

python - 基于循环变量和附加字符串创建新的列名

python - 继承属性错误: 'module' object has no attribute

python - 根据条件随机组合数据以创建新数据

python - pandas 与索引的元素相乘

python - 行相等的平均值

python - 如何在 Python 中为数据透视表填充缺失的多列和多行?

Python:新列表对现有列表中的重复元素进行分组

python - 如何用HTML显示10万行以上的数据库查询结果?

python - Tensorflow:动态地将图像分割成 block

Python - 根据两列组合删除数据框中的重复项?