Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用Pandas比较和计算高/低值_Python 3.x_Pandas_Dataframe - Fatal编程技术网

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行