python - 在 pandas 中重新采样后进行舍入

标签 python pandas dataframe

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

RateDateTime    RateBid RateAsk
2020-01-22 00:00:00.5945505 0.849190    0.849450
2020-01-22 00:00:00.5945526 0.849080    0.849520
2020-01-22 00:00:00.5945537 0.849040    0.849600
2020-01-22 00:00:00.5945552 0.849290    0.849610
2020-01-22 00:00:00.5946302 0.849300    0.849610
2020-01-22 00:00:02.5946370 0.849400    0.849610
2020-01-22 00:00:04.5946408 0.849400    0.849540
2020-01-22 00:00:04.5946432 0.849590    0.849730
2020-01-22 00:00:04.5946435 0.849160    0.849730
2020-01-22 00:00:04.5946438 0.849570    0.849940
2020-01-22 00:00:22.5946828 0.849560    0.849940
2020-01-22 00:00:37.5947048 0.849570    0.849940

我编写了这个脚本来提取日期时间、买价和卖价,并找到 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.9999999 之间的时间,我希望它向上舍入到 00:00:30 窗口,00:00:30 到 00:00:59.9999999 去到 00:01:00 窗口等等。我不知道如何解决这个问题。

最佳答案

关于python - 在 pandas 中重新采样后进行舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60391027/

相关文章:

python - 为什么必须创建一个新的全局变量来引用 "exec"中的当前类实例?

python - 使用 SVM Python 进行图像分类

python - 在python中的url中使用变量

python - Matplotlib 干图与 pandas 数据框在一系列 x 值上的关系

r - 选择以另一个数据框为条件的数据框的行号

hadoop - 如何将大部分数据合并到 spark/Hive 中的单个目录中

python - 如何在速度方面提高我的 'for' 循环性能?

python - Pandas 相关矩阵到唯一索引/列组合的字典

python - Matplotlib:如何将时间戳与 broken_barh 一起使用?

python - 如何处理pandas数据框中的列?