使用Pandas分组

2024-04-20 07:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有很多加密数据,我想看看一天/一周中是否有一个特定的时间,价格会朝一个方向或另一个方向移动。我有时间戳,一周中的某一天,从上一个时间戳结束返回,如下例数据所示

Date                  Day       Return
2019-06-22 01:00:00   Saturday -0.046910
2019-06-22 07:00:00   Saturday -0.018756
2019-06-22 13:00:00   Saturday  0.036842
2019-06-22 19:00:00   Saturday  0.000998
2019-06-23 01:00:00     Sunday  0.017672
2019-06-23 07:00:00     Sunday  0.021102
2019-06-23 13:00:00     Sunday -0.014737
2019-06-23 19:00:00     Sunday -0.039085
2019-06-24 01:00:00     Monday  0.009690
2019-06-24 07:00:00     Monday -0.004367
2019-06-24 13:00:00     Monday -0.005342
2019-06-24 19:00:00     Monday  0.001060
2019-06-25 01:00:00    Tuesday -0.027738
2019-06-25 07:00:00    Tuesday -0.001599
2019-06-25 13:00:00    Tuesday  0.006247
2019-06-25 19:00:00    Tuesday -0.036937
2019-06-26 01:00:00  Wednesday -0.064866
2019-06-26 07:00:00  Wednesday  0.012319

我的第一个问题是时间戳令人困惑。当我从不同的交易所获得数据时,很多交易所的时间戳是不同的,所以我放弃了试图标准化Date列的想法,现在就像一个新的列,对每天的周期进行编号。所以每个星期六的前6个小时是Saturday_1等等。所以最后我会有28个不同的类别(4个时段x一周7天)

然后我想要的是groupby这个新专栏,并返回给我每个类别的平均回报率

干杯


Tags: 数据datereturn时间价格方向类别编号
1条回答
网友
1楼 · 发布于 2024-04-20 07:35:59

假设Day列是正确的:

# ignore if already datetime
df.Date = pd.to_datetime(df.Date)

# hour block in the day
s = df.Date.dt.hour//6 + 1

# new column
df['group'] = df['Day'] + '_' + s.astype(str)

输出:

0      Saturday_1
1      Saturday_2
2      Saturday_3
3      Saturday_4
4        Sunday_1
5        Sunday_2
6        Sunday_3
7        Sunday_4
8        Monday_1
9        Monday_2
10       Monday_3
11       Monday_4
12      Tuesday_1
13      Tuesday_2
14      Tuesday_3
15      Tuesday_4
16    Wednesday_1
17    Wednesday_2
Name: group, dtype: object

相关问题 更多 >