Python:将数据转换为时间序列

时间:2019-05-24 12:33:06

标签: python time-series

我需要每天汇总一个数据框中的一些数据(贸易数据)。

数据连接到流,所以我有很多行,其中包含以下对此很重要的数据点(还有很多数据点在这里未复制)

数量,开始日期,结束日期

例如:

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笔记本。

任何帮助表示赞赏-即使它指向我寻找我在此处搜索中可能错过的解决方案...

1 个答案:

答案 0 :(得分:1)

我已经通过过滤解决了这个问题。

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")