0

我在下面附加了一个 CSV 文件,我需要将 1 天的时间分成 4 个间隔,即:9:15-10:00、10:01-12:00、12:01-14:30 和 14:31 -15:30 并获取“Open”的值作为每个间隔的第一个值,“High”作为最大值,“low”作为最低值,“close”作为间隔的最后一个值,“volume”作为一个区间内所有体积值的总和。每天都要做同样的程序。我曾尝试对特定间隔使用 group by 函数,但它给出了整个 csv 文件的值。我也尝试过重新采样,但它对我不起作用。这是我尝试过的代码。

在此处输入图像描述

ohlc_dict = {
        'Open':'first',
        'High':'max',
        'Low':'min',
        'Close':'last',
        'Volume':'sum'
        }

df = df.resample('60min').agg(ohlc_dict)

还有一个:

df = df.groupby(pd.Grouper(freq='60Min',closed='right',label='right')).agg({
                                          "Open":  "first",
                                          "High":  "max",
                                          "Low":   "min",
                                         "Close": "last",
                                          "Volume": "sum"
})
4

2 回答 2

1

您需要组合“日期”和“时间”列,然后在分组之前将它们转换为日期时间对象

df["Date_Time"] = df['Date'].astype(str) + df['Time'].astype(str)

df['Date_Time'] = pd.to_datetime(df['Date_Time'], format='%Y%m%d%H%M')

df = df.groupby(pd.Grouper(key='Date_Time', freq='60Min',closed='right',label='right')).agg({
                                          "Open":  "first",
                                          "High":  "max",
                                          "Low":   "min",
                                         "Close": "last",
                                          "Volume": "sum"
})
于 2021-06-19T20:02:07.073 回答
0

问题陈述的解决方案代码 此代码适用于上述问题陈述。这里的“组合”列是日期时间列。解决的代码文件

于 2021-06-23T06:11:34.247 回答