根据其他分类列的条件创建新列 [英] Create new column based on condition on other categorical column
本文介绍了根据其他分类列的条件创建新列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个如下所示的数据框
I have a dataframe as shown below
Category Value
A 10
B 22
A 2
C 30
B 23
B 4
C 8
C 24
A 9
我需要根据以下条件创建一个Flag列Flag
I need to create a Flag column Flag based following conditions
If the values of Category A is greater than or equal 5 then Flag=1, else 0
If the values of Category B is greater than or equal 20 then Flag=1, else 0
If the values of Category C is greater than or equal 25 then Flag=1, else 0
预期输出如下图
Category Value Flag
A 10 1
B 22 1
A 2 0
C 30 1
B 23 1
B 4 0
C 8 0
C 24 0
A 9 1
我尝试了以下代码
df_['Flag'] = np.where(df_[df_['Category']=='A']['Value']>=5, 1, 0)
df_['Flag'] = np.where(df_[df_['Category']=='B']['Value']>=20, 1, 0)
df_['Flag'] = np.where(df_[df_['Category']=='C']['Value']>=25, 1, 0)
推荐答案
First chain condition by &
for bitwise AND
然后 by |
按位OR
:
First chain condition by &
for bitwise AND
and then by |
for bitwise OR
:
m1 = (df['Category']=='A') & (df['Value']>=5)
m2 = (df['Category']=='B') & (df['Value']>=20)
m3 = (df['Category']=='C') & (df['Value']>=25)
df['Flag'] = np.where(m1 | m2 | m3, 1, 0)
print (df)
Category Value Flag
0 A 10 1
1 B 22 1
2 A 2 0
3 C 30 1
4 B 23 1
5 B 4 0
6 C 8 0
7 C 24 0
8 A 9 1
或者将True/False
映射到1/0
:
df['Flag'] = (m1 | m2 | m3).astype(int)
这篇关于根据其他分类列的条件创建新列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文