【发布时间】:2021-11-26 16:20:19
【问题描述】:
我的原始数据是一个包含 三 列描述旅程的数据框:数量、开始日期、结束日期。我的目标是创建一个具有每日索引和一个单列的新数据框,该列显示每天“在路上”的旅程的数量总和,即如果天 > 开始日期和天 for 循环来实现这一点,该循环每天使用 mask 过滤数据,然后求和。我还没有成功,但我认为实际上可能有更好的方法?下面是我对一些虚拟数据的尝试......
data = [[10, '2020-03-02', '2020-03-27'],
[18, '2020-03-06', '2020-03-10'],
[21, '2020-03-20', '2020-05-02'],
[33, '2020-01-02', '2020-03-01']]
columns = ['quantity', 'startdate', 'enddate']
index = [1,2,3,4]
df = pd.DataFrame(data,index,columns)
index2 = pd.date_range(start='2020-01-01', end='2020-06-01', freq='D')
df2 = pd.DataFrame(0,index2,'quantities')
for t in index2:
mask = (df['start']<t) & (df['end']>t)
df2['quantities'] = df[mask]['quantity'].sum()
【问题讨论】:
-
什么是
quantities?您的第二个数据框未正确共享。另外,请添加您预期的数据框输出
标签: python pandas pandas-groupby