概述
我有一个面板数据的多索引数据框,显示了一段时间内的历史价格.我基本上想要做的是将它们按时间平均预测(高于0.4),中等(0.2到0.4)和低(低于0.2)进行分组.
price yield forecast
date assetid
1/1/2017 4200 96.44 0.23 0.64
1/1/2017 408 46.3 0.6 0.4
1/1/2017 413 50.68 0.47 0.73
1/1/2017 3911 82.48 0.33 0.84
1/1/2017 7392 97.24 0.4 0.62
1/1/2017 7144 31.86 0.18 0.54
1/1/2017 8793 59.66 0.65 0.9
1/2/2017 4200 57.1 0.21 0.69
1/2/2017 408 4.76 0.86 0.16
1/2/2017 413 70.79 0.24 0.12
1/2/2017 3911 5.43 0.91 0.44
1/2/2017 7392 47.33 0.51 0.18
1/2/2017 7144 17.85 0.79 0.59
1/2/2017 8793 98.08 0.2 0.24
因此,我需要弄清楚的第一步是如何创建一个返回每个资产的平均值的表.
assetid Average of forecast
408 0.73
413 0.355
3911 0.62
4200 0.22
7144 0.485
7392 0.455
8793 0.425
然后,我必须加入这个新创建的表并匹配assetid,随着时间的推移具有相同的分类.
price yield forecast type
date assetid
1/1/2017 4200 96.44 0.23 0.64 med
1/1/2017 408 46.3 0.6 0.4 high
1/1/2017 413 50.68 0.47 0.73 med
1/1/2017 3911 82.48 0.33 0.84 med
1/1/2017 7392 97.24 0.4 0.62 high
1/1/2017 7144 31.86 0.18 0.54 low
1/1/2017 8793 59.66 0.65 0.9 high
1/2/2017 4200 57.1 0.21 0.69 med
1/2/2017 408 4.76 0.86 0.16 high
1/2/2017 413 70.79 0.24 0.12 med
1/2/2017 3911 5.43 0.91 0.44 med
1/2/2017 7392 47.33 0.51 0.18 high
1/2/2017 7144 17.85 0.79 0.59 low
1/2/2017 8793 98.08 0.2 0.24 high
解决方法:
pd.cut变换
df['type']=pd.cut(df.groupby(level='assetid')
.forecast
.transform('mean'),[0,0.2,0.4,np.inf],labels=['low','med','high'])
df
Out[663]:
price yield forecast type
date assetid
1/1/2017 4200 96.44 0.23 0.64 high
408 46.30 0.60 0.40 med
413 50.68 0.47 0.73 high
3911 82.48 0.33 0.84 high
7392 97.24 0.40 0.62 med
7144 31.86 0.18 0.54 high
8793 59.66 0.65 0.90 high
1/2/2017 4200 57.10 0.21 0.69 high
408 4.76 0.86 0.16 med
413 70.79 0.24 0.12 high
3911 5.43 0.91 0.44 high
7392 47.33 0.51 0.18 med
7144 17.85 0.79 0.59 high
8793 98.08 0.20 0.24 high
标签:python,lambda,pandas,numpy
来源: https://codeday.me/bug/20190828/1749642.html
最后
以上就是简单小甜瓜为你收集整理的python按时间分类数据,python – 根据平均值随时间对面板数据框中的项进行分类...的全部内容,希望文章能够帮你解决python按时间分类数据,python – 根据平均值随时间对面板数据框中的项进行分类...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复