Python 如何在数据集中的列上迭代以检查某个值,并返回同一行中但来自不同列的值?
df包含基于事件的足球数据。因此,我要做的是迭代action_name列并查找值'goal',如果找到了,我想存储与'goal'操作名称位于同一行的多个其他列中的值。下面是数据结构的示例Python 如何在数据集中的列上迭代以检查某个值,并返回同一行中但来自不同列的值?,python,pandas,loops,dataframe,Python,Pandas,Loops,Dataframe,df包含基于事件的足球数据。因此,我要做的是迭代action_name列并查找值'goal',如果找到了,我想存储与'goal'操作名称位于同一行的多个其他列中的值。下面是数据结构的示例 因此,在这种情况下,我想返回DF中每个目标的pos_dest_x、pos_dest_y和posesion_编号,并将它们存储为新DF。这应该可以做到: df.loc[df["action_name"]=="Goal", ["pos_dest_x", "pos_dest_y", "possesion_number
因此,在这种情况下,我想返回DF中每个目标的pos_dest_x、pos_dest_y和posesion_编号,并将它们存储为新DF。这应该可以做到:
df.loc[df["action_name"]=="Goal", ["pos_dest_x", "pos_dest_y", "possesion_number"]]
假设您的df的名称为actions_df,您应该能够运行以下操作:
goals_df = actions_df[actions_df['action_name']=="Goal"][['pos_dest_x','pos_dest_y','possession_number']]
它从action_df中选择行,其中action_name等于goal,并将列向下过滤到您希望看到的列 如果您的数据帧被称为df。你可以做:
reduced_dataset = df[df['action_name']=='Goal']
这将为您生成操作目标所在的数据集。各种方法:
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\u name或df['action\u name']
您可以在此处找到更多信息: