根据条件熊猫创建标志列

时间:2020-02-15 08:21:44

标签: pandas pandas-groupby

我有一个如下所示的数据框

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

1 个答案:

答案 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