groupby和for循环与熊猫

时间:2018-08-10 02:43:43

标签: python-3.x for-loop pandas-groupby

我是python3的新手,几个月前我是R用户。
这是问题所在。
我的数据框( df1 )看起来像这样:

   Date         quarter        number
2015-10-09          1           250
2015-10-09          2           400
2015-10-09          3           310
2015-10-10          1           300
2015-10-10          2           410
2015-10-10          3           280
    .               .            .
    .               .            .

数据超过5000。上图仅几行。
我想要的是每天四分之一之间的绝对差值。
我想要的结果数据帧应类似于以下帧:

   Date          absolute_interval
2015-10-09            150
2015-10-09            90
2015-10-10            110
2015-10-10            130
    .                 .            
    .                 .         

我尝试使用 df2 = df1.groupby('Date')
然后我想申请循环。
我的伪代码是

for k in df2:
    for u in df2[k]:

但是我认为这行不通,所以我目前停留在这里。
有解决方案吗?
谢谢,祝你有美好的一天。

1 个答案:

答案 0 :(得分:1)

 pd.concat([df.Date,df.groupby('Date').number.diff().abs()],axis=1).dropna()
Out[608]: 
         Date  number
1  2015-10-09   150.0
2  2015-10-09    90.0
4  2015-10-10   110.0
5  2015-10-10   130.0

您也可以这样做:

pd.DataFrame(df.groupby('Date').apply(lambda x: abs(x['number']-x['number'].shift(1))).dropna())

              number
Date                
2015-10-09 1   150.0
           2    90.0
2015-10-10 4   110.0
           5   130.0

如果需要,您可以在末尾添加.reset_index()