pandas.core.groupby.DataFrameGroupBy.ohlc#

DataFrameGroupBy.ohlc()[源代码]#

计算一组的开盘、最高、最低和收盘值,排除缺失值。

对于多个分组,结果索引将是 MultiIndex

返回:
DataFrame

每个组内的开盘、最高、最低和收盘值。

例子

对于 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

对于 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

对于重采样器:

>>> 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