【发布时间】:2014-07-13 05:07:28
【问题描述】:
我正在为一项新开发项目进行风分析。我将能够预测一年中每个小时的开发过程中的气流模式,作为该特定小时的风速和风向的函数。当然,运行 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 左右。
现在假设我想要风速 (ws) 和风向 (wd) 的中间值的流量分布 (X,Y,Z,v)。我希望能够聚合数据并获得每个点 (X,Y,Z) 的速度场 (v) 的线性插值 用公式表示:(X,Y,Z)=f(data,ws,wd)
我想我需要使用 groupby 函数,但无法找到使用两个变量的方法。
另外,您认为数据面板是否更适合此类数据的数据结构?
【问题讨论】:
标签: python pandas group-by interpolation resampling