Python-计算不同组中的范围(最高-最低) [英] Python - calculating the range(highest - lowest) in different group

查看:185
本文介绍了Python-计算不同组中的范围(最高-最低)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已将数据分组.现在,我要尝试的是在每周中从高"列中选择最高值,然后从低"列中选择最低值,然后使用最高值减去最低值来获得范围.但是代码总是错误的.有人对我有主意吗?

I have grouped my data. Now, what I am trying to do is to select the highest from the 'high' column and select the lowest from the 'low' column in each week, then use the highest to minus the lowest to get the range. But the code is always wrong. Somebody has an idea for me?

这是我的DataFrame的一部分:

Here a part of my DataFrame:

和我的错误代码:

grouped=df.groupby('week')
def Range(x,y):
    return x.max()-y.min()
grouped.agg(Range(grouped['high'],grouped['low']))

推荐答案

这就是您想要的吗?

In [67]: df
Out[67]:
                  Open        High         Low       Close    Volume   Adj Close       Week
Date
2015-09-14  116.580002  116.889999  114.860001  115.309998  58363400  112.896168 2015-09-18
2015-09-15  115.930000  116.529999  114.419998  116.279999  43341200  113.845864 2015-09-18
2015-09-16  116.250000  116.540001  115.440002  116.410004  37173500  113.973148 2015-09-18
2015-09-17  115.660004  116.489998  113.720001  113.919998  64112600  111.535266 2015-09-18
2015-09-18  112.209999  114.300003  111.870003  113.449997  74285300  111.075104 2015-09-18
2015-09-21  113.669998  115.370003  113.660004  115.209999  50222000  112.798263 2015-09-25
2015-09-22  113.379997  114.180000  112.519997  113.400002  50346200  111.026155 2015-09-25
2015-09-23  113.629997  114.720001  113.300003  114.320000  35756700  111.926895 2015-09-25
2015-09-24  113.250000  115.500000  112.370003  115.000000  50219500  112.592660 2015-09-25
2015-09-25  116.440002  116.690002  114.019997  114.709999  56151900  112.308730 2015-09-25

In [68]: df.groupby('Week').apply(lambda x: x.High.max() - x.Low.min())
Out[68]:
Week
2015-09-18    5.019996
2015-09-25    4.319999
dtype: float64

设置DF:

In [75]: from pandas_datareader import data as web

In [76]: df = web.DataReader('aapl', 'yahoo', '2015-09-14', '2015-09-25')

In [77]: df.ix[:5, 'Week'] = df.index[df.index.weekday == 4][0]

In [78]: df.ix[5:, 'Week'] = df.index[df.index.weekday == 4][-1]

In [79]: df
Out[79]:
                  Open        High         Low       Close    Volume   Adj Close       Week
Date
2015-09-14  116.580002  116.889999  114.860001  115.309998  58363400  112.896168 2015-09-18
2015-09-15  115.930000  116.529999  114.419998  116.279999  43341200  113.845864 2015-09-18
2015-09-16  116.250000  116.540001  115.440002  116.410004  37173500  113.973148 2015-09-18
2015-09-17  115.660004  116.489998  113.720001  113.919998  64112600  111.535266 2015-09-18
2015-09-18  112.209999  114.300003  111.870003  113.449997  74285300  111.075104 2015-09-18
2015-09-21  113.669998  115.370003  113.660004  115.209999  50222000  112.798263 2015-09-25
2015-09-22  113.379997  114.180000  112.519997  113.400002  50346200  111.026155 2015-09-25
2015-09-23  113.629997  114.720001  113.300003  114.320000  35756700  111.926895 2015-09-25
2015-09-24  113.250000  115.500000  112.370003  115.000000  50219500  112.592660 2015-09-25
2015-09-25  116.440002  116.690002  114.019997  114.709999  56151900  112.308730 2015-09-25

这篇关于Python-计算不同组中的范围(最高-最低)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆