Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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 大熊猫重新采样后的汇总_Python_Pandas_Dataframe - Fatal编程技术网

Python 大熊猫重新采样后的汇总

Python 大熊猫重新采样后的汇总,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含货币对的买入/卖出价格的文件(代码片段): 我编写此脚本是为了提取日期时间、出价和要价,并找到30秒间隔内的平均和第一次出价和要价: from datetime import datetime as dt import pandas as pd import re date = [] bid = [] ask = [] time_format = "%Y-%m-%d %H:%M:%S" with open("2020-01-22_pro_EURGBP.txt", "r") as

我有一个包含货币对的买入/卖出价格的文件(代码片段):

我编写此脚本是为了提取日期时间、出价和要价,并找到30秒间隔内的平均和第一次出价和要价:

from datetime import datetime as dt
import pandas as pd
import re

date = []
bid = []
ask = []
time_format = "%Y-%m-%d %H:%M:%S"

with open("2020-01-22_pro_EURGBP.txt", "r") as prices:
    next(prices)
    for line in prices:
        date_string = re.findall("\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}", line)[0]
        date_parsed = dt.strptime(date_string, time_format)
        date.append(date_parsed)
        split = line.split()
        bid.append(split[2])
        ask.append(split[3])
df = pd.DataFrame({"Bid": bid, "Ask": ask}, dtype="float64", index=date)


mean = df.resample("30S").mean()
first = df.resample("30S").first()
final = pd.merge(mean, first, left_index=True, right_index=True)
final = final.rename(
    columns={
        "Bid_x": "Average Bid",
        "Ask_x": "Average Ask",
        "Bid_y": "First Bid",
        "Ask_y": "First Ask",
    }
)
final = final.rename_axis("Datetime")

print(final)
使用以下输出代码段:

                      Average Bid  Average Ask  First Bid  First Ask
Datetime
2020-01-22 00:00:00     0.849325     0.849662    0.84919    0.84945
2020-01-22 00:00:30     0.849570     0.849937    0.84957    0.84994
2020-01-22 00:01:00     0.849501     0.849819    0.84956    0.84994

但是,例如,对于00:00:00到00:00:29.999999之间的时间,我希望它向上取整到00:00:30窗口,00:00:30到00:00:59.999999到00:01:00窗口,依此类推。我不知道如何解决这个问题。

如果您使用pandas的datetime,您可以使用round方法:

比如:

date.round('min')

使用选项closed='right'进行重采样。
date.round('min')