【问题标题】:How to do a nested loop type operation in Python Pandas?如何在 Python Pandas 中进行嵌套循环类型的操作?
【发布时间】:2020-12-12 15:22:39
【问题描述】:

我需要找到一个子集的一个子集,并且我需要迭代地进行,然后在该子集的每个实例中计算一个值,然后将其保存在一个新的输出表中。

为了更好地解释,我有一个类似于下图所示的数据框;

我需要遍历数据集,并对团队 A(第 2 组)的所有第 1 人(第 1 组)的成本求和。

然后移动到团队 B 中的第 1 个人并做同样的事情,依此类推,直到第 1 个人完成。

然后转到第 2 个人,再次对所有团队执行相同操作。

以下示例:

我的理解是使用嵌套循环,例如:

for Person in Group1:

 for Team in Group 2:

  Newcost=sum(cost)

output.append(Person, Team, Newcost)

但是,我尤其是 Python 和 pandas 的新手,我发现很难使用我通常使用的相同方法,因为有数据框设置和不同的语法。

我已经阅读了关于使用 .groupby 和 .loc 来缩小我的数据框并根据我的条件进行分组的信息,但是我需要同时使用两个条件迭代地进行操作,然后最终计算出我的值和我我不确定这会如何工作。

任何建议都会非常感谢!

【问题讨论】:

  • 您不需要任何嵌套循环。 Pandas 提供了很多工具以更简单的方式完成此操作。试试df.groupby(by=['Group1', 'Group2'], axis=0).sum() 之类的东西,其中df 是您的数据框的名称。

标签: python pandas dataframe loops subset


【解决方案1】:

我认为,您可以轻松地创建一个新的数据帧,而不是在同一个数据帧上进行操作。您可以将 dataframe.loc 与内部查询一起使用,以获取关于您想要的组的 Person 1 和 Person 2 的值。 .loc的使用方式可以在here中介绍

【讨论】:

  • 我忘了提,但是我有大量数据(比如说,100 个人,还有很多组),这就是为什么我认为创建许多单独的数据框只是为了计算每个值。
  • 您可以根据需要创建和堆叠 data_frame
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2020-12-05
  • 1970-01-01
  • 2017-09-01
相关资源
最近更新 更多