我有一个数据集,需要计算每日平均值和每周平均值。我知道这可以通过熊猫来完成。以下是我到目前为止的数据和代码;
date T1 T2 T3
12/17/13 00:28:38 19 23.1 7.3
12/17/13 00:58:38 19 22.9 7.3
12/17/13 01:28:38 18.9 22.8 6.3
12/17/13 01:58:38 18.9 23.1 6.3
12/17/13 02:28:38 18.8 23 6.3
12/17/13 02:58:38 18.8 22.9 6.3
.......
12/18/13 00:28:07 19.5 22.4 5.3
12/18/13 00:58:08 19.4 22.3 5.3
12/18/13 01:28:07 19.4 22.1 5.3
.......
3/22/14 16:55:18 17.7 20.6 10.1
3/22/14 17:08:31 17.7 20.6 10.1
3/22/14 17:26:04 17.6 20.5 8
3/22/14 17:56:04 17.7 20.5 7
和我现在的代码是;
import pandas as pd
Temp=pd.read_csv("Book1.csv",parse_dates=['date'])
Temp=Temp.set_index('date')
In [25]: Temp_plot.head()
Temp_plot=Temp.resample('W',how='mean')
Temp_plot.head()
Out[25]:
T1 T2 T3
date
2013-12-22 18.740345 35.055517 7.532414
2013-12-29 14.501770 14.950442 6.497935
2014-01-05 13.135207 14.064793 7.795858
2014-01-12 17.296154 38.503550 7.827219
2014-01-19 18.217699 38.892625 6.952212
问题是现在我必须删除一些假期的平均每周值,并且不应该包含在结果平均值中。我有一个列表,其中包含不应包含的日期,然后比较Temp_plot中的值吗?
我已根据评论中的建议添加了一个列表Wase = ["2013-12-22","2014-01-05"]
并使用了Temp_plot1 = Temp_plot.drop(Wase)
现在我收到了任何错误,即ValueError: labels ['2013-12-22' '2014-01-05'] not contained in axis
。
任何想法如何删除此错误,因为我必须删除包含列表中包含日期的行。
答案 0 :(得分:0)
您需要使用dt.date(year, month, day)
创建假期日历。然后使用列表推导结构从索引中过滤假日,如下所示。最后,使用.ix
选择这些过滤日期,根据索引值从数据框中选择数据。
import datetime as dt
holidays = [dt.date(2015, 12, 25), ...]
idx = [timestamp for timestamp in Temp.index if timestamp.date() not in holidays]
Temp_plot = Temp.ix[idx].resample('W', how='mean')