【问题标题】:Loop through 1 data frame and add the result to another data frame循环遍历 1 个数据帧并将结果添加到另一个数据帧
【发布时间】:2019-12-12 13:57:32
【问题描述】:

我有一个足球结果 (soccer) 的数据框 (df),并据此创建了另一个数据框 (homeformdf),我想用它来查看每个唯一条目的前 5 个主队结果。 我需要的输出是主队进球的总和。

df 看起来像这样:

homeformdf 是这样的:

对于 homeformdf 中的每一行,我想查看 df 并将 df 中的前 5 个主场比赛“home_team_goals_count”相加。

需要将生成的总和作为新列 'HG' 添加到 homeformdf 中

我的想法是:

  • 使用 homeformdf 中的 home_team_name 的循环
  • 匹配 df home_team_name 中的第一个实例
  • 将 home_team_goal_count 放在 homeformdf 中
  • 计数器加 1
  • 并在 df 中向下移动一行

这将重复,直到计数器达到 5,然后启动另一个循环以将 home_team_name 从 hometeamdf 向下移动 1 行,并重复直到最后一行。

我很感激我可能不会像您希望的那样对尝试的代码提出建议,因此我们将非常感谢有关如何最好地解决此问题的建议,因为我在搜索圈中四处寻找答案 - 甚至不知道是否我正在考虑这个权利。

【问题讨论】:

  • 我不太清楚你希望你的输出 df 是什么样子,但你不应该逐行遍历数据帧。
  • 是的。这是我的经验,但感谢您指出。我得到的答案比我想象的要简单得多!

标签: python pandas loops dataframe


【解决方案1】:
top_5 = df[['home_team_name', 'home_team_goal_count']].groupby('home_team_name').head(5)
goals_per_home_team = top_5.groupby('home_team_name').sum()

可能有一种方法可以在一行中完成此操作,但这是我可以最快完成的工作。

【讨论】:

    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多