Python - calculating the range(highest - lowest) in different group

后端 未结 1 1671
没有蜡笔的小新
没有蜡笔的小新 2021-01-14 16:07

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 th

相关标签:
1条回答
  • 2021-01-14 16:45

    Is that what you want?

    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
    

    Setup 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
    
    0 讨论(0)
提交回复
热议问题