python - 使用 Pandas Groupby
问题描述
我有一个df
加密数据,并试图查看一天/一周中是否有特定时间价格以一种或另一种方式移动。我有时间戳、星期几,并从以前的时间戳返回关闭,如下面的示例数据所示。
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
这个新专栏,并且已经返回给我每个类别的平均回报。
干杯
解决方案
假设您的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
推荐阅读
- c++ - i2c 错误:“i2c_smbus_read_byte_data”未在此范围内声明
- c# - 如何修复“不知道 xamarin.forms.view”创建表?
- selenium - '--window-size=' 不适用于 ChromeDriver
- php - 连接字符串中的错误,PHP 和 MySQL 部署在 Azure 中
- node.js - 我的护照身份验证在 Heroku 上不起作用,用户未返回
- javascript - 当数据按小时间隔时,Anychart 不在 x 轴上显示日期和时间
- java - Retrofit 2 中获取和发布请求的代码错误
- python - Python:如何列出导入的模块
- amazon-web-services - 将同一存储桶的某些对象设为私有,而将某些对象设为公开?
- altair - Altair 面积图显示不正确(尽管它看起来像条形图一样好)