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