Python Pandas 在不是索引的列上按 15 分钟分组
Python Pandas groupby 15Minutes on a column that is not the index
我有一个包含事务的数据框,其中有一个 trading_date、一个 delivery_date 和一个卷。 Trading_Date 是索引。
Trading_Date Delivery_Date Volume
01.01.2015 22:15 01.01.2015 23:00 15
01.01.2015 22:18 01.01.2015 23:00 10
01.01.2015 22:25 02.01.2015 00:30 5
01.01.2015 22:27 02.01.2015 00:30 20
05.01.2015 02:15 05.01.2015 04:45 13
...
我想在 Delivery_Date 之前以 15 分钟的时间块对音量求和。
因此我创建了另一列,时差从 Trading_Date 到 Delivery_Date。
df['help'] = df.index
df['Timediff'] = df['help']- df['Delivery_Date']
如何获得交货日期前 15 分钟、30 分钟、45 分钟...的 'Volume' 总和?
我尝试过使用 resample 和 groupby,但这些似乎只适用于索引。
我是这样解决的:
dfA['help'] = dfA.index
dfA['Timediff'] = dfA['help']- dfA['Delivery_Date']
dfA['Timediff2'] = dfA['Timediff'].apply(lambda x: x / np.timedelta64(1,'m')) # converts Timediff in minutely value
dfA['Time15M'] = dfA['Timediff2']/15
dfA['Time15M'] = dfA['Time15M'].apply(np.floor) # round
dfA = dfA.sort('Time15M') ## Sort Data by the new Date and hour column
dfB = dfA.groupby(['Time15M']) ['Volume'].sum()
print dfA.head()
结果如下:
Timediff Volume
-15 522.9
-14 978.0
-13 621.1
-12 737.6
-11 767.9
-10 611.1
-9 1564.4
-8 1230.5
-7 1800.3
-6 9250.0
不幸的是,时间戳不正确,但足以进行分析。
我有一个包含事务的数据框,其中有一个 trading_date、一个 delivery_date 和一个卷。 Trading_Date 是索引。
Trading_Date Delivery_Date Volume
01.01.2015 22:15 01.01.2015 23:00 15
01.01.2015 22:18 01.01.2015 23:00 10
01.01.2015 22:25 02.01.2015 00:30 5
01.01.2015 22:27 02.01.2015 00:30 20
05.01.2015 02:15 05.01.2015 04:45 13
...
我想在 Delivery_Date 之前以 15 分钟的时间块对音量求和。
因此我创建了另一列,时差从 Trading_Date 到 Delivery_Date。
df['help'] = df.index
df['Timediff'] = df['help']- df['Delivery_Date']
如何获得交货日期前 15 分钟、30 分钟、45 分钟...的 'Volume' 总和?
我尝试过使用 resample 和 groupby,但这些似乎只适用于索引。
我是这样解决的:
dfA['help'] = dfA.index
dfA['Timediff'] = dfA['help']- dfA['Delivery_Date']
dfA['Timediff2'] = dfA['Timediff'].apply(lambda x: x / np.timedelta64(1,'m')) # converts Timediff in minutely value
dfA['Time15M'] = dfA['Timediff2']/15
dfA['Time15M'] = dfA['Time15M'].apply(np.floor) # round
dfA = dfA.sort('Time15M') ## Sort Data by the new Date and hour column
dfB = dfA.groupby(['Time15M']) ['Volume'].sum()
print dfA.head()
结果如下:
Timediff Volume
-15 522.9
-14 978.0
-13 621.1
-12 737.6
-11 767.9
-10 611.1
-9 1564.4
-8 1230.5
-7 1800.3
-6 9250.0
不幸的是,时间戳不正确,但足以进行分析。