【发布时间】:2018-02-27 04:07:44
【问题描述】:
我有一个 csv 文件,因此我有一个包含访问露营地的开始和结束日期的列表或数据框。
start_date end_date
0 2016-01-21 2016-01-24
1 2016-01-28 2016-01-29
2 2016-02-02 2016-02-10
3 2016-02-08 2016-02-12
...
我想计算一个数据框,其中包含该时间段内每一天的一行,一列计算累积访问者,一列表示当天居住的访问者数量和访问者天数的累积总和。
我目前有一些 hacky 代码将访问者数据读入普通的 python 列表visitor_array,并为期间/年份中的每个日期创建另一个列表year_array。然后,它在year_array 中循环每个日期,并在visitor_array 上进行内部循环,并将year_array 的当前元素与当天的新访客计数和常驻访客数量相附加。
temp_day = datetime.date(2016,1,1)
year_array = [[temp_day + datetime.timedelta(days=d)] for d in range(365)]
for day in year_array:
new_visitors = 0
occupancy = 0
for visitor in visitor_array:
if visitor[0] = day:
new_visitors +=1
if (visitor[0] <= day[0]) and (day[0] <= visitor[1]):
occupancy +=1
day = day.append(new_visitors)
day = day.append(occupancy)
然后我将 year_array 转换为 pandas 数据框,创建一些 cumsum 列并忙于绘图等
有没有更优雅的 pythonic/pandasic 方式在 pandas 中完成这一切?
【问题讨论】:
-
你能分享一个输出的例子吗?