Python 尝试实现基于datetime月份的两行数据帧之间的基本减法功能

Python 尝试实现基于datetime月份的两行数据帧之间的基本减法功能,python,pandas,dataframe,Python,Pandas,Dataframe,我试图找出dataframe中股票收盘价和开盘价之间的月平均价差。 基本函数如下所示 for i in range(1,len(df)): #difference between today's opening price minus yesterday's closing price gap+=(df['Open'][i]-df['Close'][i-1]) Date Open High Low Close 2019-01-01 108

我试图找出dataframe中股票收盘价和开盘价之间的月平均价差。
基本函数如下所示

for i in range(1,len(df)):
    #difference between today's opening price minus yesterday's closing price
    gap+=(df['Open'][i]-df['Close'][i-1])

Date        Open    High    Low      Close
2019-01-01  10881.7 10923.6 10807.1 10910.1
2019-01-02  10868.8 10895.3 10735.0 10792.5
2019-01-03  10796.8 10814.0 10661.2 10672.2
2019-01-04  10699.7 10741.0 10628.6 10727.3
2019-01-07  10804.8 10835.9 10750.1 10771.8
2019-01-08  10786.2 10818.4 10733.2 10802.1
但是我想在我的数据框中找到每个月的
avg_gap
。并将
avg_gaps
存储在列表中。
Dataframe具有每天的开盘价、最高价、最低价和收盘价以及相关日期(日期时间格式)
看起来像这样

for i in range(1,len(df)):
    #difference between today's opening price minus yesterday's closing price
    gap+=(df['Open'][i]-df['Close'][i-1])

Date        Open    High    Low      Close
2019-01-01  10881.7 10923.6 10807.1 10910.1
2019-01-02  10868.8 10895.3 10735.0 10792.5
2019-01-03  10796.8 10814.0 10661.2 10672.2
2019-01-04  10699.7 10741.0 10628.6 10727.3
2019-01-07  10804.8 10835.9 10750.1 10771.8
2019-01-08  10786.2 10818.4 10733.2 10802.1
像这样,dataframe拥有1.5年的数据

这就是我尝试过的

list=[]
gap=0
count=0

for i in range(1,len(df)):   
    if(df['Date'][i].month==df['Date'][i-1].month):
        count+=1
        gap+=(df['Open'][i]-df['Close'][i-1])
    if(df['Date'][i].month<df['Date'][i-1].month):
        avg_gap=gap/count
        list.append(avg_gap)
        count=0
        gap=0
list=[]
差距=0
计数=0
对于范围(1,len(df))中的i:
如果(df['Date'][i].month==df['Date'][i-1].month):
计数+=1
间隙+=(df['Open'][i]-df['Close'][i-1])

如果(df['Date'][i].month您需要在
DataFrame
中创建一个month列来分组。然后,编写一个计算平均差距的函数

间隙计算 您将许多差异加在一起,如下所示:

 df['Open'][1]-df['Close'][0]
+df['Open'][2]-df['Close'][1]
+df['Open'][3]-df['Close'][2]
+...
 (df['Open'][1]+df['Open'][2]+df['Open'][3]+...)
-(df['Close'][0]+df['Close'][1]+df['Close'][2]+...)
但是,我们可以采用不同的方式将其分组如下:

 df['Open'][1]-df['Close'][0]
+df['Open'][2]-df['Close'][1]
+df['Open'][3]-df['Close'][2]
+...
 (df['Open'][1]+df['Open'][2]+df['Open'][3]+...)
-(df['Close'][0]+df['Close'][1]+df['Close'][2]+...)
因此,执行计算的简单方法如下

df['Open'].iloc[1:].sum()-df['Close'].iloc[:-1].sum()

代码
很有魅力!非常感谢。