Python 如何在数据集中的列上迭代以检查某个值,并返回同一行中但来自不同列的值?

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包含基于事件的足球数据。因此,我要做的是迭代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的名称为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']

您可以在此处找到更多信息: