如何删除pandas(.resample)计算出的一些周均值?
How to delete some of the mean weekly values calculated by pandas (.resample)?
我有一个数据集,需要计算日平均值和周平均值。我知道这可以通过 Pandas 来完成。以下是我目前的数据和代码;
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
。
知道如何删除此错误,因为我必须删除包含列表中日期的行。
您需要使用 dt.date(year, month, day)
创建假期日历。然后使用如下所示的列表理解结构从索引中过滤假期。最后,您 select 使用 .ix
这些过滤日期,其中 selects 数据来自基于索引值的数据框。
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')
我有一个数据集,需要计算日平均值和周平均值。我知道这可以通过 Pandas 来完成。以下是我目前的数据和代码;
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
。
知道如何删除此错误,因为我必须删除包含列表中日期的行。
您需要使用 dt.date(year, month, day)
创建假期日历。然后使用如下所示的列表理解结构从索引中过滤假期。最后,您 select 使用 .ix
这些过滤日期,其中 selects 数据来自基于索引值的数据框。
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')