Python 计算平均值时保留原始列

Python 计算平均值时保留原始列,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我的数据集看起来像这样。这是一个基于分钟的数据集 time, Open, High 2017-01-01 00:00:00, 1.2432, 1.1234 2017-01-01 00:01:00, 1.2432, 1.1234 2017-01-01 00:02:00, 1.2332, 1.1234 2017-01-01 00:03:00, 1.2132, 1.1234 ...., ...., .... 2017-12-31 23:59:00, 1.2132, 1.1234 我做了以下工作来计算

我的数据集看起来像这样。这是一个基于分钟的数据集

time, Open, High
2017-01-01 00:00:00, 1.2432, 1.1234
2017-01-01 00:01:00, 1.2432, 1.1234
2017-01-01 00:02:00, 1.2332, 1.1234
2017-01-01 00:03:00, 1.2132, 1.1234
...., ...., ....
2017-12-31 23:59:00, 1.2132, 1.1234
我做了以下工作来计算上述分钟数据集的小时平均值

然后我加载df_平均值,得到小时值:

但我也想要的是原始的开放价值和高价值

我需要两件事的帮助:

一旦计算出平均值,我希望它被标记为开放平均值和高平均值 由于小时平均值以小时为单位给出时间,因此我希望加载当时的原始打开值和高值。 在这里:

原始数据集的特定时间戳的开放值和高值是相同的,但开放平均值和高平均值是相同的 计算该时间戳的每小时平均值 新的df应如下所示:

一旦我们在df中获得正确的数据集,我想过滤新的df以只加载特定于时间的数据

例如:从每天晚上10点到下午4点加载时间范围的数据。当前它加载所有小时。

使用添加后缀重命名

df['time'] = pd.to_datetime(df['time'])

df_mean = df.set_index('time').resample('H').mean()

df_mean = df_mean.add_suffix('_Mean')
并与how='inner'合并以提取小时数据:

df.merge(df_mean, left_on='time', right_index=True, how='inner')
随机数据输出头

                    time      Open      High  Open_Mean  High_Mean
0    2017-01-01 00:00:00  1.219690  1.693049   1.519751   2.042550
60   2017-01-01 01:00:00  1.688490  1.404521   1.526833   2.115046
120  2017-01-01 02:00:00  1.015285  2.653544   1.533529   1.797564
180  2017-01-01 03:00:00  1.357672  2.299571   1.506012   2.043484
240  2017-01-01 04:00:00  1.293786  2.312414   1.489759   2.131644
300  2017-01-01 05:00:00  1.040048  2.791968   1.438353   1.816585
360  2017-01-01 06:00:00  1.225080  1.505802   1.473208   2.193237
420  2017-01-01 07:00:00  1.145402  3.217261   1.481710   1.914683

太神了非常感谢。最后一个问题:如何只过滤特定的时间?比如每天晚上10点到4点?我只想看看这些数据。df[df['time'].dt.hour.between10,15]给你上午10点到下午4点之前的时间。那是晚上10点到凌晨4点?df[~df['time'].dt.hour.between4,22]?它的意思是不,否定了下面的系列。我认为它更适合于一个新问题,因为在评论中回答它并不是那么简单。
df['time'] = pd.to_datetime(df['time'])

df_mean = df.set_index('time').resample('H').mean()

df_mean = df_mean.add_suffix('_Mean')
df.merge(df_mean, left_on='time', right_index=True, how='inner')
                    time      Open      High  Open_Mean  High_Mean
0    2017-01-01 00:00:00  1.219690  1.693049   1.519751   2.042550
60   2017-01-01 01:00:00  1.688490  1.404521   1.526833   2.115046
120  2017-01-01 02:00:00  1.015285  2.653544   1.533529   1.797564
180  2017-01-01 03:00:00  1.357672  2.299571   1.506012   2.043484
240  2017-01-01 04:00:00  1.293786  2.312414   1.489759   2.131644
300  2017-01-01 05:00:00  1.040048  2.791968   1.438353   1.816585
360  2017-01-01 06:00:00  1.225080  1.505802   1.473208   2.193237
420  2017-01-01 07:00:00  1.145402  3.217261   1.481710   1.914683