我有一个包含以下列名称的数据框,我想根据给定条件创建一个新列。条件是为数据框中的每个唯一 EVENT_ID 创建一个新列 Race,检查 WIN_LOSE 中值为 1 的行,取与该 WIN_LOSE 行对应的 SELECTION_TRAP 值并创建竞赛。
我尝试使用 pandas where 函数,但我没有得到正确的结果
df['Race'] = df.where(df['WIN_LOSE']==1,df['SELECTION_TRAP'],axis = 0)
EVENT_ID SELECTION_TRAP WIN_LOSE
174331755 1 0
174331755 2 0
174331755 7 1
174331755 4 0
174331755 3 0
174331755 6 0
174331755 8 0
174329130 5 0
174329130 7 1
174329130 1 0
174329130 4 0
174329130 2 0
174329130 8 0
我的预期输出应该如下所示。
EVENT_ID SELECTION_TRAP WIN_LOSE RACE
174331755 7 1 7
174329130 7 1 7
最佳答案
首先按 boolean indexing
在 WIN_LOSE
中按 1
进行过滤然后分配新列。
df1 = df[df['WIN_LOSE']==1].copy()
df1['RACE'] = df1['SELECTION_TRAP']
print (df1)
EVENT_ID SELECTION_TRAP WIN_LOSE RACE
2 174331755 7 1 7
8 174329130 7 1 7
关于python - 根据给定条件将新列添加到现有数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69281698/