1

我有一个包含 1408 行数据的 Python 数据框。我的目标是将一周中与给定工作日相关的最大数字和最小数字与前一周最大/最小发生的一周中同一天的下一周数字进行比较。从本质上讲,我想看看五分位数(因为一个工作日有 5 天)排名 1 和 5,看看它们每周如何变化。构建与每个工作日相关的数字的 cdf。

  1. 为了清理数据,我总共需要删除 18 周。也就是说,与假期相关的数据框中的每个星期加上假期发生后的下一周的整个星期。

  2. 在此之后,我认为我应该在数据框中插入一列,将我的所有数据标记为周一到周五——对于文件中的所有日期(有 6 年的数据)。标记 MF 的原因是我可以按升序对与星期几相关的每个数字进行排序。并查询星期几。

非常感谢关于 1. 或 2. 或两者的方法建议。

谢谢!

4

1 回答 1

0

#2 似乎最好通过组合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  4
于 2012-09-03T21:46:57.380 回答