python - 从具有不同行长的数据帧创建一个 3D 数组
问题描述
我有一个这样的数据框:
仅使用时间、经度和纬度列,我想要的是创建一个形状为 (2,16,2) 的 3D 数组,其中第一个维度是时间(在这种情况下,有 2 次:2 或 3) ,第二个是代表每对lat-lon坐标的总行数,最后一个维度是lat-lon对。
3d 数组应该是这样的:
array([[[ 85.573875, -50.856796],
[ 22.516417, -64.196556],
[ 4.072308, -48.226948],
[ 24.439985, -47.150661],
[129.924103, -50.699009],
[296.879486, -20.473812],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan]],
[[282.733734, -58.982613],
[346.649414, -49.212891],
[105.564247, -59.02515 ],
[ 77.098854, -61.031345],
[ 93.66552 , -52.018295],
[ 26.899933, -65.549835],
[ 8.558081, -48.222881],
[ 28.211027, -50.188721],
[137.030777, -51.931877],
[295.907715, -20.918041],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan],
[ nan, nan]]])
您可以从数据框中注意到,对于每个时间值(2 和 3),都有不同数量的数据/行。所以想法是,就在第一次从 2 变为 3 之前,剩余的空值必须用 NaN 填充,然后移动到第二次(time=3)。NaN 值的目的是保持数组 (2,16,2) 的形状。
我不知道我是否说清楚了。有谁能够帮我?谢谢。
编辑:这是我到目前为止所做的:
假设 df 是我上面显示的数据框的名称:
array1 = np.zeros((1,16,2)) #creates an empty array
for i in range(0,16):
if (df.iloc[i,1]==2): #selects only the data with time=2
array1[:,i,:] = [df.iloc[i,2],df.iloc[i,3]]
else:
array1[:,i,:] = [np.nan,np.nan] #fills the rest with NaN values
array2 = np.zeros((1,16,2))
for i in range(0,16):
if (df.iloc[i,1]==3): #selects only the data with time=3
array2[:,i,:] = [df.iloc[i,2],df.iloc[i,3]]
else:
array2[:,i,:] = [np.nan,np.nan] #fills the rest with NaN values
array2 = np.roll(array2,10,axis=1) #adjusts the position of the nan values
merged_arrays = np.vstack((array1,array2)) #the required final array, with shape (2,16,2)
我希望你能帮助我开发一种更直接、更清晰的方法来从数据框创建这个 3D 数组。
解决方案
推荐阅读
- c# - 如何将 .NET Core 应用程序连接到 wsdl 服务
- angular - Angular 多个应用程序 dist 文件夹不会在本地服务器上加载索引文件
- r - 使用 ggplot2/plotly 绘制“楼梯”
- javascript - React 中渲染的正确定义是什么?
- python - django.core.exceptions.ImproperlyConfigured:AUTH_USER_MODEL 指的是尚未安装的模型“app1.myUser”
- python - 使用 Python 从 txt 文件中导入数据
- wso2 - WSO2 - 由消息处理器的所有任务处理的消息
- flutter - 如何在另一个 ListView 内制作 ListView 以及当嵌套 ListView 到达边缘时,滚动主滚动颤动
- python - 蟒蛇 | 给定每个索引的特定数字范围,如何将主列表中的值分组到不同列表
- amazon-web-services - 由于任务失败或并发 HA_RESTORE_DB 请求而中止任务。同时将 S3 恢复到 RDS