pandas.core.groupby.SeriesGroupBy.ohlc#

SeriesGroupBy.ohlc()[source] #

Compute open, high, low and close values of a group, excluding missing values.

For multiple groupings, the result index will be a MultiIndex

Returns:
DataFrame

Open, high, low and close values within each group.

Examples

For SeriesGroupBy:

>>> lst = ['SPX', 'CAC', 'SPX', 'CAC', 'SPX', 'CAC', 'SPX', 'CAC',]
>>> ser = pd.Series([3.4, 9.0, 7.2, 5.2, 8.8, 9.4, 0.1, 0.5], index=lst)
>>> ser
SPX 3.4
CAC 9.0
SPX 7.2
CAC 5.2
SPX 8.8
CAC 9.4
SPX 0.1
CAC 0.5
dtype: float64
>>> ser.groupby(level=0).ohlc()
 open high low close
CAC 9.0 9.4 0.5 0.5
SPX 3.4 8.8 0.1 0.1

For DataFrameGroupBy:

>>> data = {2022: [1.2, 2.3, 8.9, 4.5, 4.4, 3, 2 , 1],
...  2023: [3.4, 9.0, 7.2, 5.2, 8.8, 9.4, 8.2, 1.0]}
>>> df = pd.DataFrame(data, index=['SPX', 'CAC', 'SPX', 'CAC',
...  'SPX', 'CAC', 'SPX', 'CAC'])
>>> df
 2022 2023
SPX 1.2 3.4
CAC 2.3 9.0
SPX 8.9 7.2
CAC 4.5 5.2
SPX 4.4 8.8
CAC 3.0 9.4
SPX 2.0 8.2
CAC 1.0 1.0
>>> df.groupby(level=0).ohlc()
 2022 2023
 open high low close open high low close
CAC 2.3 4.5 1.0 1.0 9.0 9.4 1.0 1.0
SPX 1.2 8.9 1.2 2.0 3.4 8.8 3.4 8.2

For Resampler:

>>> ser = pd.Series([1, 3, 2, 4, 3, 5],
...  index=pd.DatetimeIndex(['2023年01月01日',
...  '2023年01月10日',
...  '2023年01月15日',
...  '2023年02月01日',
...  '2023年02月10日',
...  '2023年02月15日']))
>>> ser.resample('MS').ohlc()
 open high low close
2023年01月01日 1 3 1 2
2023年02月01日 4 5 3 5