【发布时间】:2017-09-28 13:57:14
【问题描述】:
我有一个相当复杂的问题。我需要从一组开始和结束日期内的数据框中选择行,然后将这些值相加并将它们放入新的数据框中。
所以我从数据框开始,df:
import random
dates = pd.date_range('20150101 020000',periods=1000)
df = pd.DataFrame({'_id': random.choice(range(0, 1000)),
'time_stamp': dates,
'value': random.choice(range(2,60))
})
并定义一些开始和结束日期:
import pandas as pd
start_date = ["2-13-16", "2-23-16", "3-17-16", "3-24-16", "3-26-16", "5-17-16", "5-25-16", "10-10-16", "10-18-16", "10-23-16", "10-31-16", "11-7-16", "11-14-16", "11-22-16", "1-23-17", "1-29-17", "2-06-17", "3-11-17", "3-23-17", "6-21-17", "6-28-17"]
end_date = pd.DatetimeIndex(start_date) + pd.DateOffset(7)
然后需要发生的是,我需要创建一个带有weekly_sum 的新数据框,它将df 的value 列相加,该列出现在start_date 和end_date 之间。
例如,新数据框的第一行将返回 2-13-16 和 2-20-16 之间的 values 的总和。我想我会使用groupby.sum() 或类似的东西。
它可能看起来像这样:
id start_date end_date weekly_sum
65 2016-02-13 2016-02-20 100
非常感谢任何方向!
附:我知道我对 random.choice 的使用有点不稳定,所以如果你有更好的生成随机数的方法,我很乐意看到它!
【问题讨论】:
标签: python pandas datetime dataframe group-by