我有一个包含1408行数据的Python数据。我的目标是将一周内与给定工作日相关的最大数和最小数与上一周最大/最小发生的同一天下一周的数目进行比较。本质上,我想看看五分之一(因为每周有5天),排名第1和第5,看看它们每周的变化情况。建立一个与每个工作日相关联的数字的cdf。
对第1或第2条或两者都提出方法建议,将不胜感激。
谢谢!
发布于 2012-09-03 21:46:57
第二种方法似乎最好是将df.groupby()和apply()结合在一起,对产生的Groupby对象进行处理。也许一个例子是最好的解释方法。
提供数据:
In [53]: df
Out[53]:
Value
2012-08-01 61
2012-08-02 52
2012-08-03 89
2012-08-06 44
2012-08-07 35
2012-08-08 98
2012-08-09 64
2012-08-10 48
2012-08-13 100
2012-08-14 95
2012-08-15 14
2012-08-16 55
2012-08-17 58
2012-08-20 11
2012-08-21 28
2012-08-22 95
2012-08-23 18
2012-08-24 81
2012-08-27 27
2012-08-28 81
2012-08-29 28
2012-08-30 16
2012-08-31 50
In [54]: def rankdays(df):
.....: if len(df) != 5:
.....: return pandas.Series()
.....: return pandas.Series(df.Value.rank(), index=df.index.weekday)
.....:
In [52]: df.groupby(lambda x: x.week).apply(rankdays).unstack()
Out[52]:
0 1 2 3 4
32 2 1 5 4 3
33 5 4 1 2 3
34 1 3 5 2 4
35 2 5 3 1 4https://stackoverflow.com/questions/12167634
复制相似问题