我正在为新开发项目进行风力分析。我将能够预测一年中每个小时的开发中的气流模式,作为该特定小时的风速和风向的函数。当然,运行8760风CFD模拟需要花费太多时间。我的方法是仅运行16次模拟(8个风向和2个风速)并从这些结果中插入流量分布。
为了让您了解数据的外观,我已经创建了一个简化的案例。
X = pd.Series([1,2,3,4,5])
Y = pd.Series([1,2,3,4,5])
Z = pd.Series([1,2,3,4,5])
v1 = pd.Series([2,6,1,7,8])
df1 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v1})
df1['ws']=3
df1['wd']=180
v2 = pd.Series([3,1,4,2,2])
df2 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v2})
df2['ws']=3
df2['wd']=0
v3 = pd.Series([2.5,2.3,1.3,7.2,1.4])
df3 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v3})
df3['ws']=6
df3['wd']=180
v4 = pd.Series([2.4,5.6,6.1,2.3])
df4 = pd.DataFrame({'X':X,'Y':Y,'Z':Z,'v':v4})
df4['ws']=6
df4['wd']=0
df=pd.concat([df1,df2,df3,df4])
请注意,最后两列包含该特定模拟的气象风速和方向。点(X,Y,Z)可以是100,000。
现在假设我希望流量分布(X,Y,Z,v)为风速(ws)和风向(wd)的中间值。我希望能够聚合数据并获得每个点(X,Y,Z)的速度场(v)的线性插值 把它放在一个公式中:(X,Y,Z)= f(data,ws,wd)
我想我需要使用groupby函数,但无法找到使用两个变量的方法。
另外,您认为数据面板对于此类数据的数据结构是否更充分?
答案 0 :(得分:0)
如果要查看以两个变量为条件的分布特征,可以按
继续In[10]: df.groupby(['ws', 'wd']).apply(lambda x: x.mean())
Out[10]:
X Y Z v ws wd
ws wd
3 0 3 3 3 2.40 3 0
180 3 3 3 4.80 3 180
6 0 3 3 3 4.10 6 0
180 3 3 3 2.94 6 180
关于面板数据,它通常是一个品味问题,对吧?您是否考虑要概括的X,Y,Z尺寸。我通常不会这样做,所以你只留下时间,这给你一个时间序列而不是一个小组。
此外,熊猫'面板包过去缺少标准数据帧的许多功能。我相信最近有一些恢复,但我不知道,因为我并没有真正使用它。肯定有人可以在这里筹码。