python – 根据前几年的数据计算pandas数据帧行的百分位数

python – 根据前几年的数据计算pandas数据帧行的百分位数,第1张

概述我有以下数据帧: datetime JD YEAR VAL 2000-01-01 1 2000 0.52000-01-02 2 2000 1.22000-01-03 3 2000 2.12000-01-04 4 2000 3.4 2000-01-05 我有以下数据帧:

datetime       JD      YEAR    VAL 2000-01-01      1      2000    0.52000-01-02      2      2000    1.22000-01-03      3      2000    2.12000-01-04      4      2000    3.4 2000-01-05      5      2000    4.62000-01-06      6      2000    6.82000-01-07      7      2000    7.22000-01-08      8      2000    0.22000-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个值组成的数组中的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. 2010cdf = df[df.YEAR == lyr]# Latest year dataframepdf = df[df.index.year < lyr] # PrevIoUs years dataframepdf.groupby('JD')['VAL']stats.percentileofscore(pdf['VAL'],cdf['VAL'])

但是,我不知道如何使代码工作. groupby只返回组,而我需要一个值列表.

@R_419_6120@ 设置一个小样本数据帧:

np.random.seed(1234)df = pd.DataFrame({ 'jd':  np.tile([1,2],3),'yr':  np.repeat([2008,2009,2010],2),'val': np.random.randn(6) })

然后它只是一行:

df['pctile'] = df.groupby('jd')['val'].rank(pct=True)

这是输出,用sort_values排序([‘jd’,’val’])

jd       val    yr    pctile4   1 -0.720589  2010  0.3333330   1  0.471435  2008  0.6666672   1  1.432707  2009  1.0000001   2 -1.190976  2008  0.3333333   2 -0.312652  2009  0.6666675   2  0.887163  2010  1.000000
总结

以上是内存溢出为你收集整理的python – 根据前几年的数据计算pandas数据帧行的百分位数全部内容,希望文章能够帮你解决python – 根据前几年的数据计算pandas数据帧行的百分位数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1193470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存