创建一个包含大量条件的新变量,将空值和分类值组合在一起

2024-04-25 05:48:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个看起来像这样的数据帧

ID Loc SL_Local SL_State TP Overall
12 54X          E        I  D
45 86I D        I        H  E
98 65R H        H        H  H

我想创建一个新的列(SL),它使用带有if/then逻辑的slu Local和slu State列。基本上,如果slu Local为空,那么SL=slu State,否则如果slu Local=D,slu State=I,那么SL=D,依此类推。总共大约有20种可能的组合。你知道吗

我发现了一些使用if/else逻辑创建标志的例子(比如here),但这并不是我想要的。我还发现了一些关于多个条件的问题(如this one),但是它返回^ {< CD1> },并且似乎不与空白值一起工作。我在一篇专栏文章中尝试了这种逻辑,南斯认为空格可能太难处理,但那也不管用。你知道吗


Tags: 数据idif标志local逻辑elseloc
1条回答
网友
1楼 · 发布于 2024-04-25 05:48:53

使用np.选择你知道吗

import pandas as pd
import numpy as np
df = pd.DataFrame({'ID':[12,45,98],'Loc':['54X','86I','65R'],'SL_Local':['','D','H'],'SL_State':['E','I','H'],'TP':['I','H','H'],'Overall':['D','E','H']})
df = df[['ID','Loc','SL_Local','SL_State','TP','Overall']]
df

输出:

    ID  Loc  SL_Local   SL_State    TP  Overall
0   12  54X                E        I      D
1   45  86I    D           I        H      E
2   98  65R    H           H        H      H

那就做吧

condition_list = [
          (df['SL_Local'] =='') & (df['SL_State'] is not None),
          (df['SL_Local'] == 'D') & (df['SL_State'] == 'I')
           ]
choice_list = [df['SL_State'], 'D']

df['SL'] = np.select(condition_list, choice_list, default = '')
df

输出:

   ID  Loc    SL_Local    SL_State    TP    Overall    SL
0  12  54X                   E         I       D        E
1  45  86I        D          I         H       E        D
2  98  65R        H          H         H       H   

相关问题 更多 >