这是我的问题。
我有一个数据帧df其中包含两列名为日期和wd。
而和表示范围从(0〜360)的风向。
因此,df表示在某个时间范围内某处的风向。将风向分为几类
我想那些风向分为16类像这样:
http://7xrn7f.com1.z0.glb.clouddn.com/16-3-8/30080798.jpg
的范围这里介绍。
http://7xrn7f.com1.z0.glb.clouddn.com/16-3-8/8398960.jpg
这是我能对付现在:
wd_stat = []
for i in range(0,len(df),1):
wd = df.wd.iloc[i]
### NNE 11.25-33.75
if 11.25 <= wd < 33.75:
wd_stat.append("NNE")
### NE 33.75-56.25
if (33.75 <=wd < 56.25):
wd_stat.append("NE")
### ENE 56.25 - 78.75
if (56.25 <=wd < 78.75):
wd_stat.append("ENE")
if (78.75 <=wd < 101.25):
wd_stat.append("E")
if (101.25 <=wd < 123.75):
wd_stat.append("ESE")
.....not done yet......
我的方法不够灵活和倾倒。
任何人都可以提供一些建议,以高效率处理这样的分类问题(数字范围到某些字符)。
它确实是非常优雅的解决方案! – MaxU
太麻烦了!谢谢! –
另一个问题在这里。在你的方法中,[0〜11.25]范围被替换为[360〜371.25]。所以我想知道在数字化之前在这些列中添加360。使用'df.iloc [df.loc [0 <= df ['wd'] <11.25] .index] [“wd”] + 360'无法实现。如何基于某些分类将特定行添加到常量? –