gpt4 book ai didi

pandas - 根据其他分类列的条件创建新列

转载 作者:行者123 更新时间:2023-12-02 06:32:18 25 4
gpt4 key购买 nike

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

Category   Value
A 10
B 22
A 2
C 30
B 23
B 4
C 8
C 24
A 9

我需要创建一个基于以下条件的标志列标志

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)

最佳答案

第一个链条件由 & 表示按位 AND,然后由 | 表示按位 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)

关于pandas - 根据其他分类列的条件创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57669111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com