Python 3.x 如何使用Pandas比较和计算高/低值
以下是基于Python 3.x 如何使用Pandas比较和计算高/低值,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,以下是基于df的分钟: GMT_Time Open 2017-01-03 07:00:00 5.2475 2017-01-03 07:01:00 5.2475 2017-01-03 07:02:00 5.2475 2017-01-03 07:03:00 5.2475 2017-01-03 07:04:00 5.2475 2017-01-03 07:05:00 5.2475 2017-01-03 07:06:00
df
的分钟:
GMT_Time Open
2017-01-03 07:00:00 5.2475
2017-01-03 07:01:00 5.2475
2017-01-03 07:02:00 5.2475
2017-01-03 07:03:00 5.2475
2017-01-03 07:04:00 5.2475
2017-01-03 07:05:00 5.2475
2017-01-03 07:06:00 5.2475
.....
我想使用第一个GMT\u时间打开值(07:00:00)
,并获得与该特定日期07:00:00
打开值相比低和高值的计数
我的新df
应该如下所示:
- 这是一个基于
的数据集
Open
value是我们用来比较的值
High
是在07:00:00
Low
是在07:00:00
Same
是在07:00:00
GMT_Time Open High Low Same
2017-01-03 07:00:00 5.2475 234 346 32
2017-01-04 07:00:00 6.2475 234 346 12
2017-01-05 07:00:00 4.2475 234 346 14
我做了什么?
通过执行以下操作,我能够找到给定日期的高值
和低值
:
df.groupby(df['GMT_Time'].dt.floor('D')).Open.agg(['min','max'])
但是我试图找到与07:00:00
打开的值相比高或低的值的总计数
如何解决此问题?使用转换进行操作
df['DIFF']=df.groupby(df.GMT_Time.dt.date,sort=False).Open.transform('first')
pd.crosstab([df.GMT_Time.dt.date,df.DIFF], np.sign(df.Open-df.DIFF))
col_0 0.0
GMT_Time DIFF
2017-01-03 5.2475 7
谢谢你写的答案。它似乎不能正常工作。此外,只有在计算出与给定日期的07:00:00
的第一个值相比,该值是低还是高之后,我们才需要进行计数。@floss ha有拼写错误,应该是第一个谢谢,现在它没有给出7:00:00
和Open
在7:00:00
@floss的值,这很容易添加pd.crosstab([df.GMT\u time.dt.date,s],np.sign(df.Open-s)).reset_index()
它不起作用。它为-1
0
1
列创建3行