【发布时间】:2019-11-22 06:51:18
【问题描述】:
在我的数据框中,我有这些列。
日期 时间-(5 分钟桶 7:00、7:05、7:10 等....) 高的 低
我想做的是在“高”列中找到最大值,然后在“低”列中找到最小值。
取那个差异,本质上是高-低,然后将它传递给一个新的列
“如果 'High'.max 位于 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.max 后才找到 Low.min?
我知道我可以按“日期”分组并找到每个日期的最大值。
#High grouped by Date
df2 = df.loc[df.groupby('Date')['High'].idxmax()]
我可以找到范围,但需要找到 High.max 之后的范围,然后找到每个日期的 Low.min,然后按时间。
#Difference between High and Low
range = (df['High']-df['Low'])
但我不知道如何在找到最大值并将差异返回到最大时间发生的位置后找到最小值
【问题讨论】:
-
*如果 high.max 位于 8.05... 则将其放在第 8:00 行的旁边` 在您的示例中看起来不是这样:max 位于
7:15但您选择了7:20的值并将结果放在7:20。 -
啊抱歉我会修复它,在我举个例子之前写了它
标签: python pandas dataframe lambda