python - 来自 groupby 的 Pandas 累积差异

标签 python pandas dataframe group-by pandas-groupby

我需要计算从 MultiIndex 级别开始的差异,以计算从级别开始的衰减。我的示例输入和输出将如下所示:

               values
place time     
A     a           120
      b           100
      c            90
      d            50
B     e            11
      f            12
      g            10
      h             9

               values

A     a           NaN
      b           -20
      c           -30
      d           -70
B     e           Nan
      f            +1
      g            -1
      h            -2

我可以使用 grouby 来获取关卡中连续单元格之间的差异:

df.groupby(level=0)['values'].diff()

但这不是我想要的!

唉,接受的答案不是我想要的。我有一个更好的例子:

arrays = [np.array(['bar', 'bar', 'bar', 'foo', 'foo', 'foo']),
          np.array(['one', 'two', 'three', 'one', 'two', 'three'])]
df = pd.DataFrame([1000, 800, 500, 800, 400, 200], index=arrays)

   bar one    1000
       two     800
       three   500
   foo one     800
       two     400
       three   200

    expected_result = pd.DataFrame([Nan, -200, -500, Nan, -400, -600], index=arrays)

   bar one      Nan
       two     -200
       three   -500
   foo one     Nan 
       two     -400
       three   -600

但是 df.groupby(level=0).diff().cumsum() 的结果是:

pd.DataFrame([Nan, -200, -500, Nan, -900, -1100], index=arrays)

   bar one      Nan
       two     -200
       three   -500
   foo one      Nan 
       two     -900
       three   -1100

最佳答案

你在寻找 cumsum 之后吗?

df.groupby(level=0)['values'].diff().cumsum()

关于python - 来自 groupby 的 Pandas 累积差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50139128/

相关文章:

python - 在 HTML 电子邮件 Django 中显示内嵌图像

python Pandas : how to return an empty dataframe in a loop?

Python - 根据另一列中的值获取两列的最大值或最小值?

python - 循环遍历 2 个 Pandas Dataframes 并将行值传递给计算距离的函数

R - 在不删除 NA 值的情况下拆分数据框

python - 正则表达式精确匹配

python - 在 Windows 上执行 pip installpsychopy 时出现错误消息

python - Pandas:当大小不相等时,如何将 Python 列表中的值分配给数据框中的列

python - 为什么 False 值 (0) 的字节数小于 True (1)?

python - 如何为每隔一行的数据框的浮点索引添加一个值?