如何使用熊猫获取时间戳计算

时间:2019-05-03 12:09:54

标签: python pandas

我想知道价格在什么时候低点和高点。

数据看起来像这样

    Last    Timestampvalue  

2   3071.56 1547986549
3   3097.82 1547986666
4   3097.82 1547986675
5   3095.25 1547986737
6   3087.42 1547986798
7   3095.29 1547986854
8   3095.25 1547986918
9   3093.11 1547986975
10  3103    1547987034
11  3095    1547987096
12  3100.6  1547987157
13  3099.84 1547987218
14  3098.77 1547987277
15  3097.24 1547987340
16  3090    1547987397
17  3090    1547987457

预期

    Last    Timestampvalue   pct_Max

2   3071.56 1547986549
3   3097.82 1547986666
4   3097.82 1547986675
5   3095.25 1547986737
6   3087.42 1547986798
7   3095.29 1547986854
8   3095.25 1547986918
9   3093.11 1547986975
10  3103    1547987034
11  3095    1547987096
12  3100.6  1547987157
13  3099.84 1547987218
14  3098.77 1547987277
15  3097.24 1547987340
16  3090    1547987397
17  3090    1547987457         0.5341
18  3098    1547987519         0.5

我期望的逻辑如下,

(1547987034-1547986549)/(1547987457-1547986549)= 0.5341 (1547987034-1547986549)/(1547987519-1547986549)= 0.5

这是最大值(3103)发生在10行,这里的时间戳是1547987034,然后我将其与第2行的时间戳相减(1547986549),然后将其除以在第17行出现的第15分钟时间戳,因此该时间戳这是1547987457,并在第2行的时间戳中减去它。

我知道可以在excel中进行计算,但是在熊猫中,我试图找出哪个值在15分钟时是最大值,并且不确定如何获取其时间戳,而且还需要进行类型拆分。

for v in df['Type'].unique():
    mask = df['Type'].eq(v)
    df.loc[mask, f'Prev15minMax_{v}'] = (df.loc[mask,'Last']
                                           .rolling('15min',min_periods=15)
                                           .max())

类型列看起来像this

1 个答案:

答案 0 :(得分:0)

这是您进行计算的元素(细分):

ControlType

这是进入指定列的一种方法:

max_Last = df1.loc[df1['Last'] == df1['Last'].max(),'Timestampvalue']
max_ts = df1['Timestampvalue'].max()
min_ts = df1['Timestampvalue'].min()
cpt = (max_Last - min_ts) / (max_ts - min_ts)