groupby差异和百分比变化

时间:2017-08-03 15:07:09

标签: python pandas

我有以下数据框

              t_f      m_s
   uni        
   A          False    1.2
   A          True     0.6
   B          False    0.9
   B          True     0.6

我正在尝试为每个uni获得True - False的差异,并且还计算百分比变化True-False / False 我确信使用group by有一种方法可以做到这一点,但我无法弄清楚如何。

输出应该是数据框

              m_s_diff   m_s_diff_percentage
   uni        
   A          -0.6         -50%
   B          -0.3         -33.33%

2 个答案:

答案 0 :(得分:2)

试试这个..

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


uni
A   -0.6
B   -0.3
Name: m_s, dtype: float64

以下是@MaxU提供的解决方案

df.groupby(level=0)['m_s'].agg(['diff','pct_change']).dropna()
Out[502]: 
     diff  pct_change
uni                  
A    -0.6   -0.500000
B    -0.3   -0.333333

答案 1 :(得分:1)

使用查询。

df.query('t_f==True').m_s - df.query('t_f==False').m_s