Python 熊猫重采样功能打印中间蜡烛

Python 熊猫重采样功能打印中间蜡烛,python,pandas,finance,Python,Pandas,Finance,当我们需要将分钟数据转换为每日数据时,我们使用以下代码 df.resample('D').apply({'low': lambda s: s.min(),'high': lambda s: s.max(),'volume': lambda s: s.sum()}).dropna() 它每天给我一支蜡烛。现在我看到的不是给我一支蜡烛,而是给我所有的蜡烛(每天的蜡烛),那一天处于中间状态 假设一天从9:30开始,在16:00结束,因此第一个每日蜡烛的开/高/低/关时间为9:30分钟,9:31打开

当我们需要将分钟数据转换为每日数据时,我们使用以下代码

df.resample('D').apply({'low': lambda s: s.min(),'high': lambda s: s.max(),'volume': lambda s: s.sum()}).dropna() 
它每天给我一支蜡烛。现在我看到的不是给我一支蜡烛,而是给我所有的蜡烛(每天的蜡烛),那一天处于中间状态

假设一天从9:30开始,在16:00结束,因此第一个每日蜡烛的开/高/低/关时间为9:30分钟,9:31打开时间为9:30关闭时间为9:31,高、低将进行相应的比较和更新

这是我需要的市场重播功能,所以用户可以看到谁的每日蜡烛是在一天中得到的数据开始来的变化


非常感谢您的帮助。

我第一次误解了您的问题,现在我为您提供一个新的答案

首先让我们获取一些数据:

import yfinance as yf

ticker = "msft"
df = yf.download(ticker, period="4d", interval="1m",)
df = df.loc[:, ["Open", "High", "Low", "Close", "Volume"]]
让我们创建一个名为df1的新数据帧,它将保存您的结果。 因为这是最后一段数据,所以每一条线的闭合线都是相同的,所以我们从这开始

df1 = pd.DataFrame()
df1["Close"] = df["Close"]
如果按日期分组,则打开的值将始终是该日期的第一个值

df1["Open"] = df.groupby(pd.Grouper(level=0, freq="D"))["Open"].transform("first")
到目前为止,我们已经:

                            Close    Open
Datetime                                 
2020-06-10 09:30:00-04:00 191.260 191.125
2020-06-10 09:31:00-04:00 191.260 191.125
2020-06-10 09:33:00-04:00 191.405 191.125
2020-06-10 09:34:00-04:00 191.490 191.125
2020-06-10 09:35:00-04:00 191.510 191.125
...                           ...     ...
2020-06-15 15:55:00-04:00 188.690 184.580
2020-06-15 15:56:00-04:00 188.700 184.580
2020-06-15 15:57:00-04:00 188.610 184.580
2020-06-15 15:58:00-04:00 188.470 184.580
2020-06-15 15:59:00-04:00 189.170 184.580
使用展开法计算低值和高值

df1["Low"] = (
    df.groupby(pd.Grouper(level=0, freq="D"))["Low"].expanding().min().droplevel(0)
)

df1["High"] = (
    df.groupby(pd.Grouper(level=0, freq="D"))["High"].expanding().max().droplevel(0)
)
最后,可以使用groupby date上的cumsum计算体积

df1["Volume"] = df.groupby(pd.Grouper(level=0, freq="D"))["Volume"].cumsum()
您的最终数据帧如下所示:

print(df1[["Open", "High", "Low", "Close", "Volume"]])
                             Open    High     Low   Close    Volume
Datetime                                                           
2020-06-10 09:30:00-04:00 191.125 191.390 191.010 191.260    965121
2020-06-10 09:31:00-04:00 191.125 191.450 191.010 191.260   1112327
2020-06-10 09:33:00-04:00 191.125 191.590 191.010 191.405   1433916
2020-06-10 09:34:00-04:00 191.125 191.590 191.010 191.490   1566392
2020-06-10 09:35:00-04:00 191.125 191.800 191.010 191.510   1759454
...                           ...     ...     ...     ...       ...
2020-06-15 15:55:00-04:00 184.580 190.820 184.010 188.690  26253657
2020-06-15 15:56:00-04:00 184.580 190.820 184.010 188.700  26477100
2020-06-15 15:57:00-04:00 184.580 190.820 184.010 188.610  26738140
2020-06-15 15:58:00-04:00 184.580 190.820 184.010 188.470  27120167
2020-06-15 15:59:00-04:00 184.580 190.820 184.010 189.170  27933060

[1421 rows x 5 columns]


感谢您的回复,但我们仍然是一天一支蜡烛,而我正在寻找蜡烛更新每1分钟,我想打印所有的中间蜡烛为每日蜡烛。像daily Candles一样,每次更新1分钟就会有变化,我想打印daily candlesHi的所有更新,你能帮我吗