gpt4 book ai didi

python - 如何在 pandas 中的情况下对分类变量应用逻辑比较

转载 作者:行者123 更新时间:2023-12-02 05:58:30 24 4
gpt4 key购买 nike

我有如下所示的数据框。它有分类列(带),其层次结构从 0、G1、G2、G3 到 G4,其中 G4 最高。

我想在 pandas 中重写以下 SQL 逻辑

CASE
WHEN Band = '00' THEN access.Y
WHEN Band = 'G1' THEN acess.X +200
WHEN Band >= 'G2' THEN acess.X +access.Y

END As Result
From access

数据框

Band    X   Y     Result
00 200 2100 2100
G1 300 2300 500
G2 200 5000 5200
G3 150 6000 6150
00 250 2500 2500
G1 400 6000 600
G2 300 6000 6300
G4 500 4500 5000

如何在 python 中完成此操作?

最佳答案

您需要pd.Categorical在这里(对于处理分类排序和比较的一般情况)能够在分类系列中使用比较运算符,例如 >=,然后使用 np.select 用于使用 if,elif,else 条件。

df['Band'] = pd.Categorical(df['Band'],categories=['00','G1','G2','G3','G4'],ordered=True)

df['result']=np.select([df['Band']=='00',df['Band']=='G1',df['Band']>='G1']
,[df['Y'],df['X']+200,df['X'].add(df['Y'])])
print(df)
<小时/>
  Band    X     Y  Result  result
0 00 200 2100 2100 2100
1 G1 300 2300 2600 500
2 G2 200 5000 5200 5200
3 G3 150 6000 6150 6150
4 00 250 2500 2500 2500
5 G1 400 6000 6400 600
6 G2 300 6000 6300 6300
7 G4 500 4500 5000 5000

详情:如果我们现在打印该系列,我们将能够看到招聘结构:

print(df['Band'])

0 00
1 G1
2 G2
3 G3
4 00
5 G1
6 G2
7 G4
Name: Band, dtype: category
Categories (5, object): [00 < G1 < G2 < G3 < G4]

关于python - 如何在 pandas 中的情况下对分类变量应用逻辑比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59746038/

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