簡體   English   中英

熊貓groupby.diff()未返回預期輸出

[英]Pandas groupby.diff() not returning expected output

我有一個外部組和一個內部組,我希望根據外部組找到每個內部組之間的差異。 通常,我可以使用groupby將內部組嵌套在每個外部組中,但是由於某些原因, groupbydiff函數將返回平面向量,而不是嵌套數組。

df = pd.DataFrame({'inner':list('aabbccddee'),'outer':[0,0,1,1,0,0,1,1,0,0],
    'value':np.random.randint(0,100,10)})

    inner  outer  value
0     a      0     78
1     a      0     68
2     b      1     78
3     b      1     22
4     c      0     53
5     c      0     25
6     d      1     82
7     d      1     38
8     e      0      2
9     e      0     39

例如,如果我想要每個外部組的內部組的sum ,則只需使用groupby

In [19]: df.groupby(['outer','inner']).sum()
Out[19]:
             value
outer inner
0     a        146
      c         78
      e         41
1     b        100
      d        120

以上是正確的輸出,它對diff 以外的所有其他功能均有效。 當我使用diff ,我希望以與上述類似的格式輸出,但是得到:

In [20]: df.groupby(['outer','inner']).diff()
Out[20]:
   value
0    NaN
1  -10.0
2    NaN
3  -56.0
4    NaN
5  -28.0
6    NaN
7  -44.0
8    NaN
9   37.0

以上等效於df.groupby(['inner']).value.diff()因此groupby似乎沒有考慮外部組。 我可以找到沒有問題的鍛煉方法,但是使用groupby會更優雅和簡潔。 有誰知道這是為什么發生以及如何補救?

諸如s.diff()cumsum等函數是非聚合函數,因此您將獲得一系列形狀的結果,可以在此處使用np.diff() ,例如以下示例:

print(df.groupby(['outer','inner'])['value'].apply(lambda x: np.diff(x).item()))

outer  inner
0      a       -10
       c       -28
       e        37
1      b       -56
       d       -44

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM