Python-计算不同组中的范围(最高-最低) [英] Python - calculating the range(highest - lowest) in different group
本文介绍了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屋!
查看全文