首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何循环处理熊猫的数据?

如何循环处理熊猫的数据?
EN

Stack Overflow用户
提问于 2017-05-29 03:15:22
回答 1查看 261关注 0票数 0

我有一个python函数,它工作在坐标序列(轨迹数据)上。它要求数据采用以下格式。

代码语言:javascript
运行
复制
#items = [Item(x1, y1), Item(x2, y2), Item(x3, y3), Item(x4, y4)]
items = [Item(0.5, 0.5), Item(-0.5, 0.5), Item(-0.5, -0.5), Item(0.5, -0.5)]

它还需要从上面的中找到xmin、ymin、xmax、ymax,并将其指定为一个边界框,如下所示。

代码语言:javascript
运行
复制
 spindex = pyqtree.Index(bbox=[-1, -1, 1, 1])
                        #bbox = [xmin,ymin,xmax,ymax]

现在,插入项目如下所示。

代码语言:javascript
运行
复制
 #Inserting items
 for item in items:
     spindex.insert(item, item.bbox)

正如我们现在所看到的,上述所有操作都是在items中指定的单个坐标序列上执行的。我需要在具有多个轨迹的数据帧上执行上述步骤,每个轨迹具有多个点序列,并由id vid标识。

示例df如下:

代码语言:javascript
运行
复制
   vid       x         y
0  1         2         3
1  1         3         4
2  1         5         6
3  2         7         8 
4  2         9        10
5  3         11       12
6  3         13       14
7  3         15       16
8  3         17       18

在上述数据框架中,x,y是坐标数据,属于同一“vid”的所有点形成一个单独的轨迹,因此可以观察到属于航次id (vid) =1的行(0-2)是一条轨迹,而属于vid=2的点是另一条轨迹等等。

上述数据也可以转换为以下df (仅在需要时):

代码语言:javascript
运行
复制
    vid        (x,y)
0   1          [ (2,3),(3,4), (5,6) ]
1   2          [ (7,8),(9,10) ]
2   3          [ (11,12),(13,14),(15,16),(17,18) ]

我想要创建一种方法来遍历df,或者使用vid循环它们,并将所有坐标作为,并找到xmin、xmax、ymin、ymax,并插入它们,如上面所示,用于df中的每个轨迹。

我有这样的代码,但不起作用

代码语言:javascript
运行
复制
for group in df.groupby('vid'):
bbox = [ group['x'].min(), group['y'].min(), group['x'].max(), group['y'].max() ]
spindex.insert(group['vid'][0], bbox)

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-29 06:11:42

Gourpby返回((gkeys),grouped_dataframe)

修改您的代码如下:

代码语言:javascript
运行
复制
for g in df.groupby('vid'):
   vid = g[0]
   g_df = g[1]
   bbox = [ g_df['x'].min(), g_df['y'].min(), g_df['x'].max(), g_df['y'].max() ]
   spindex.insert(vid, bbox)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44234139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档