我的pandas数据框有Columns'Date'和'Skew(float no。)'。我想平均每周二之间的偏差值,并将其存储在列表或数据框中。我尝试使用这个问题Pandas, groupby and summing over specific months中给出的lambda,但它只对某一周的某些人有所帮助,但是我不能跨越一周,即从一个星期二到另一个星期。你能给出如何做同样的事情吗?
答案 0 :(得分:0)
以下是随机数据
的示例df = pd.DataFrame({'Date' : pd.date_range('20130101', periods=100),
'Skew': 10+pd.np.random.randn(100)})
min_date = df.Date.min()
start = min_date.dayofweek
if start < 1:
min_date = min_date - pd.np.timedelta64(6+start, 'D')
elif start > 1:
min_date = min_date - pd.np.timedelta64(start-1, 'D')
df.groupby((df.Date - min_date).astype('timedelta64[D]')//7).mean()
输入:
>>> df
Date Skew
0 2013-01-01 10.082080
1 2013-01-02 10.907402
2 2013-01-03 8.485768
3 2013-01-04 9.221740
4 2013-01-05 10.137910
5 2013-01-06 9.084963
6 2013-01-07 9.457736
7 2013-01-08 10.092777
输出:
Skew
Date
0 9.625371
1 9.993275
2 10.041077
3 9.837709
4 9.901311
5 9.985390
6 10.123757
7 9.782892
8 9.889291
9 9.853204
10 10.190098
11 10.594125
12 10.012265
13 9.278008
14 10.530251
逻辑:查找从第一周到星期二的相对星期,以及groupby和每个组(即一周没有&#39; s)的意思。