我有一个如下所示的数据框
ID Price Duration
1 100 60
2 200 2
3 1 366
4 1 365
我想根据“价格”列和“持续时间”列中的条件创建一个标志列。
步骤:
如果Price小于20,则将其标记为False,否则将其标记为True
如果Duration小于30,则将其标记为False,否则将其标记为True
预期输出:
ID Price Duration Price_Flag Duration_Flag
1 100 60 True True
2 200 2 True False
3 1 366 False True
4 10 365 False True
答案 0 :(得分:3)
一个想法是按列名['Price','Duration']
和列DataFrame.gt
的列顺序进行比较:
df[['Price_Flag','Duration_Flag']] = df[['Price','Duration']].gt([20,30])
或对每列分别使用Series.gt
:
df['Price_Flag'] = df['Price'].gt(20)
df['Duration_Flag'] = df['Duration'].gt(30)
或使用DataFrame.assign
:
df = df.assign(Price_Flag = df['Price'].gt(20),
Duration_Flag = df['Duration'].gt(30))
print (df)
ID Price Duration Price_Flag Duration_Flag
0 1 100 60 True True
1 2 200 2 True False
2 3 1 366 False True
3 4 1 365 False True