python - Python:将数据转换为时间序列
问题描述
我在数据框中有一些数据(交易数据),我需要每天汇总。
数据连接到流,所以我有很多行,其中有以下对此很重要的数据点(还有更多,所以这里不复制)
卷、开始日期、结束日期
例如:
Volume, Start Date, End Date
100, 1 April 2019, 30 June 2019
50, 1 Jan 2019, 30 June 2019
所有这些行都可以有重叠的开始日期和结束日期。
我正在寻找的是一种创建输出的简单方法:(使用上面的 2 笔交易作为示例数据)日,总交易量
例如:
1 Jan, 50
2 Jan, 50
....
1 April, 150
2 April, 150
...
29 June, 150
30 June, 150
1 July, 0
...
31 Dec, 0
我可以遍历每一行,然后遍历每笔交易。但是有这么多,这似乎是一个漫长而缓慢的过程。
我正在使用带有 Python 3 的 Jupyter 笔记本。
任何帮助表示赞赏 - 即使它指向我在搜索中可能错过的解决方案......
解决方案
我已经通过过滤解决了这个问题。
def volumebyday(date, df, start, end, col):
#date = date to sum, df = dataframe, start/end = name of start/end date column, col = column to sum
trade1 = df[start] <= date
trade2 = df[end] >= date
return df[col][trade1 & trade2].sum(axis=0)
然后通过 lambda 函数使用它
df = df.apply(lambda row: volumebyday(row["date"], trades, "start_date","end_date","qty")
推荐阅读
- swift - 如何使用 swift 使用调查研究工具包从 json 字符串中读取问题?
- html - 在 Word HTML (Outlook) 中将图像与文本垂直对齐
- ruby-on-rails - ActiveStorage Blobs 表,可以忽略列吗?
- android - 如何格式化 kotlinx-datetime LocalDateTime?
- matlab - 如何解决错误“无法从 optim.problemdef.OptimizationConstraint 转换为逻辑!” 在 MATLAB 中
- electron - 我通过 mac 在电子上创建菜单,但是如何隐藏默认菜单“电子”?
- python-3.x - PyQt5 - 我如何在 QDateEdit 上禁用周末
- r - 如何使用 R 更改 tesseract 的页面分割方法 (PSM)?
- javascript - 如何在Javascript中将英尺和英寸转换为厘米并返回
- java - 成员资格测试以查找数组中是否存在数字