基于前几年d计算pandas数据帧行的百分比

2024-05-13 05:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据框:

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日的行),datetime是索引列。

我想计算一个新的数据帧,从2010年1月1日到2010年12月31日。我希望它包含一个列,该列计算由10个值(2000年1月1日、2001年1月1日…2009年1月1日)组成的数组中2010年1月1日值(VAL)的百分比。同样,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,而我需要一个值列表。


Tags: 数据dataframedfdatetimepdfval数组year