pandas.core.groupby.DataFrameGroupBy.ohlc#
- DataFrameGroupBy.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