【问题标题】:How to iterate over a column in a Pandas DF to check for a certain value and return a value in the same row but from a different column?如何遍历 Pandas DF 中的列以检查某个值并返回同一行但来自不同列的值?
【发布时间】:2020-02-07 09:36:17
【问题描述】:

df 包含基于事件的足球数据。因此,我要做的是遍历 action_name 列并查找值“目标”(如果找到),然后我想存储与“目标”操作名称位于同一行的多个其他列的值。以下是数据结构的示例。

所以在这种情况下,我想为 DF 中的每个目标返回 pos_dest_x、pos_dest_y 和 possesion_number,并将它们存储为新的 DF。

【问题讨论】:

    标签: python pandas loops dataframe


    【解决方案1】:

    这样做的各种方式:

    columns_wanted = ['pos_dest_x','pos_dest_y','possession_number']
    
    # 1
    df.loc[df.action_name == 'Goal'][columns_wanted]
    
    # 2 
    df[df.action_name == 'Goal'][columns_wanted]
    
    # 3
    df.query('action_name == "Goal"')[columns_wanted]
    

    在情况 1 和 2 中,您可以使用 df.action_namedf['action_name']

    您可以在这里找到更多信息:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html

    【讨论】:

      【解决方案2】:

      这应该可以解决问题:

      df.loc[df["action_name"]=="Goal", ["pos_dest_x", "pos_dest_y", "possesion_number"]]
      

      【讨论】:

        【解决方案3】:

        假设您的 df 的名称为 actions_df,您应该能够运行如下内容:

        goals_df = actions_df[actions_df['action_name']=="Goal"][['pos_dest_x','pos_dest_y','possession_number']]
        

        actions_df 中选择行,其中action_name 等于目标,然后将列过滤到您想要查看的列。

        【讨论】:

          【解决方案4】:

          如果您的数据框名为 df.你可以这样做:

          reduced_dataset = df[df['action_name']=='Goal']
          

          这将为您生成动作为目标的数据集。

          【讨论】:

            猜你喜欢
            • 2022-11-08
            • 1970-01-01
            • 2020-01-01
            • 1970-01-01
            • 2014-11-30
            • 2013-02-15
            • 1970-01-01
            • 2023-04-02
            • 2020-06-18
            相关资源
            最近更新 更多