代码之家  ›  专栏  ›  技术社区  ›  Madhur Yadav

根据不工作的条件更改行值

  •  -1
  • Madhur Yadav  · 技术社区  · 8 年前

    我有一个数据帧:

     TYPE              NAME          IS_MAIN
     PPRTYPE           TIME            0
     PPRTYPE           SIGHT           0
     PPRTYPE           SIGHT           1
     PNRDTL            NOT FOUND       1
     PPRTYPE           SIGHT           0 
     PPRTYPE           TIME            1
    

    如果 TYPE PPRTYPE 和 NAME 是 SIGHT IS_MAIN 是 1 然后 姓名 PNRDTL 'NOT APPLICABLE' 如果 是 1 .

    注意 IS_MAIN = 1 因为任何类型都只会出现一次。

    代码:

    temp = df.loc[(df['IS_MAIN'] == 1) & (df['TYPE'] == 'PPRTYPE'), 'NAME']
    temp = temp.reset_index(drop=True)
    temp = temp[0]
    if (temp == 'SIGHT'):
         df.loc[(df['TYPE'] == 'PNRDTL') & (df['IS_MAIN'] == 1) , 'NAME'] = 'NOT APPLICABLE'
    

    我面临的问题是

    (df['TYPE'] == 'PNRDTL') & (df['IS_MAIN'] == 1)
    

    如果有人能发现我犯的错误,或者告诉我解决的方法,我会很高兴的。

    1 回复  |  直到 8 年前
        1
  •  1
  •   jezrael    8 年前

    对我来说:

    #if `1` is integer
    mask = (df['IS_MAIN'] == 1) & (df['TYPE'] == 'PPRTYPE')
    #if 1 is string
    #mask = (df['IS_MAIN'] == '1') & (df['TYPE'] == 'PPRTYPE')
    
    if (df.loc[mask, 'NAME'].iloc[0] == 'SIGHT'):
        df.loc[mask , 'NAME'] = 'NOT APPLICABLE'
    print (df)
          TYPE            NAME  IS_MAIN
    0  PPRTYPE            TIME        0
    1  PPRTYPE           SIGHT        0
    2  PPRTYPE  NOT APPLICABLE        1
    3   PNRDTL       NOT FOUND        1
    4  PPRTYPE           SIGHT        0
    5  PPRTYPE  NOT APPLICABLE        1