【发布时间】:2016-01-01 16:28:51
【问题描述】:
我有以下数据框:
datetime JD YEAR VAL
2000-01-01 1 2000 0.5
2000-01-02 2 2000 1.2
2000-01-03 3 2000 2.1
2000-01-04 4 2000 3.4
2000-01-05 5 2000 4.6
2000-01-06 6 2000 6.8
2000-01-07 7 2000 7.2
2000-01-08 8 2000 0.2
2000-01-09 9 2000 0.9
...
2010-12-31 365 2014 4.1
第一年是 2000 年,去年是 2010 年。没有闰年(即没有对应于 2 月 29 日的行),日期时间是索引列。
我想计算一个新的数据框,从 2010 年 1 月 1 日到 2010 年 12 月 31 日。我希望它包含一个列,用于计算由 10 个值组成的数组中 2010 年 1 月 1 日值 (VAL) 的百分位数 ( 2000 年 1 月 1 日、2001 年 1 月 1 日……2009 年 1 月 1 日)。同样,将 2010 年 1 月 2 日与往年的 1 月 2 日进行比较......
lyr = df.YEAR.max() # last year i.e. 2010
cdf = df[df.YEAR == lyr]# Latest year dataframe
pdf = df[df.index.year < lyr] # Previous years dataframe
pdf.groupby('JD')['VAL']
stats.percentileofscore(pdf['VAL'], cdf['VAL'])
但是,我不确定如何使代码正常工作。 groupby 只返回 group 而我需要一个值列表。
【问题讨论】: