如何对项目进行分组然后遍历子组[重复]

Posted

技术标签:

【中文标题】如何对项目进行分组然后遍历子组[重复]【英文标题】:How to group items then iterate through subgroups [duplicate] 【发布时间】:2019-06-08 21:54:18 【问题描述】:

假设我有一个如下所示的数据框:

    interview       longitude        latitude
1   A1                  34.2             90.2
2   A1                  54.2             23.5
3   A3                  32.1             21.5
4   A4                  54.3             93.1
5   A2                  45.1             29.5
6   A1                  NaN              NaN
7   A7                  NaN              NaN
8   A1                  NaN              NaN
9   A3                  23.1             38.2
10  A5                  -23.7            -98.4

我希望能够执行某种 groupby 方法,输出每个子组及其各自的经度和纬度。因此,类似这样的期望输出将是:

    interview         longitude         latitude 
1   A1                  34.2             90.2
2   A1                  54.2             23.5
6   A1                  NaN              NaN
8   A1                  NaN              NaN

5   A2                  45.1             29.5

3   A3                  32.1             21.5
9   A3                  23.1             38.2

... and so on

所以这需要循环完成,因为我需要遍历每个子组的每一行。

我的目标是为每个面试(A1、A2、...)找出哪个面试官(A1、A2、...)走的距离最长 - 本质上,我只需要能够执行一些每个子组内的计算.. 我将如何迭代地执行这种分组方法,以便我可以再次迭代地在每个子组内执行操作,

谢谢!

【问题讨论】:

根据您的输出,这看起来不像 groupby,这看起来像 df.sort_values(by=['interview','longitude','latitude'], ascending=False)。对于您描述的用例,添加一个计算距离的列更有意义(我假设从/到一些常见的经纬度?)然后执行df.groupby('interview').max()['distance'] 【参考方案1】:

您可以在GroupBy 中循环访问不同的组:

for name, group in df.groupby('interview'):
    # perform some operations on group

【讨论】:

当您运行 type(group) 时,它会返回元组...我需要访问数据帧,如何将这些组重新分配到 tmp 数据帧中? 更新了答案

以上是关于如何对项目进行分组然后遍历子组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将查询分组为组和子组

将javascript数组中的重复值分组在一起,然后按值名称升序对这些组进行排序

如何对 JSON 项目进行排序/分组

C# 属性列表。需要根据2个条件对它们进行分组[重复]

如何对 BigQuery 中的重复字段进行分组

如何对具有多列的表中的数据进行分组[重复]