在我的数据框中,我有这些列。你知道吗
日期 时间-(5分钟7:00、7:05、7:10等…) 高 低
我想做的是在“高”列中找到最大值,然后在“低”列中找到最小值。你知道吗
把这个差异,从本质上说是高到低,传递给一个新的专栏,就是
“如果‘高’。最大值在7:20行,低值在7:50行,有什么区别,把这个区别放在7:20旁边的行上”
最后,我想用“时间”来计算所有“高”-“低”差异的平均值或中位数
例如(从大数据帧)
Date Time Ticker High Low Range
0 01/02/18 7:05 USD/JPY 112.170 112.150
1 01/02/18 7:10 USD/JPY 112.175 112.140
2 01/02/18 7:15 USD/JPY 112.185 112.170
3 01/02/18 7:20 USD/JPY 112.180 112.155 112.180-112.080 = .10
4 01/02/18 7:25 USD/JPY 112.160 112.145
5 01/02/18 7:30 USD/JPY 112.160 112.155
6 01/02/18 7:35 USD/JPY 112.160 112.120
7 01/02/18 7:40 USD/JPY 112.145 112.100
8 01/02/18 7:45 USD/JPY 112.120 112.085
9 01/02/18 7:50 USD/JPY 112.155 112.080
10 01/02/18 7:55 USD/JPY 112.150 112.130
32898 07/05/19 11:35 USD/JPY 108.545 108.525
32899 07/05/19 11:40 USD/JPY 108.550 108.535
32900 07/05/19 11:45 USD/JPY 108.560 108.530 108.560-108.525 = .035
32901 07/05/19 11:50 USD/JPY 108.550 108.540
32902 07/05/19 11:55 USD/JPY 108.535 108.525
32903 07/05/19 12:00 USD/JPY 108.550 108.530
32904 07/05/19 12:05 USD/JPY 108.555 108.530
32905 07/05/19 12:10 USD/JPY 108.560 108.540
32906 07/05/19 12:15 USD/JPY 108.560 108.540
期望输出
Time Range (median or avg for all of the instances where the Max High was 7:20 ect)
7:20 .10
11:45 .035
我用Lamdba来确定我只找到了最低在找到最大值高每一天?你知道吗
我知道我可以按“日期”分组,找到每个日期的最大值。你知道吗
#High grouped by Date
df2 = df.loc[df.groupby('Date')['High'].idxmax()]
我能找到射程,但找到目标后需要射程最大值高然后找到最低每个日期,然后按时间。你知道吗
#Difference between High and Low
range = (df['High']-df['Low'])
但是我不知道如何在找到最大值并将差值返回到最大时间发生的地方之后找到最小值
要在最大值之后获得最小值,可以过滤groupby组中的行:
结果:
为了验证这是否正确,您必须将第一行的下限设置为112.000,即使一天的绝对最小值出现在最大值之前。
如果您也需要时间信息,请将其转换为数据帧并插入时间列:
最终结果:
更新
如果您希望将范围作为新列插入原始数据帧中:
输出:
就像我已经说过的,第一个max出现在
7:15
,而不是7:20
。总之,我的方法是:提供:
相关问题 更多 >
编程相关推荐