Pandas Dataframe Check if column value is in column list

前端 未结 4 881
旧巷少年郎
旧巷少年郎 2021-01-02 13:40

I have a dataframe df:

data = {\'id\':[12,112],
        \'idlist\':[[1,5,7,12,112],[5,7,12,111,113]]
       }
df=pd.DataFrame.from_dict(data)
         


        
4条回答
  •  忘掉有多难
    2021-01-02 14:20

    Use apply:

    df['flag'] = df.apply(lambda x: int(x['id'] in x['idlist']), axis=1)
    print (df)
        id                idlist  flag
    0   12    [1, 5, 7, 12, 112]     1
    1  112  [5, 7, 12, 111, 113]     0
    

    Similar:

    df['flag'] = df.apply(lambda x: x['id'] in x['idlist'], axis=1).astype(int)
    print (df)
        id                idlist  flag
    0   12    [1, 5, 7, 12, 112]     1
    1  112  [5, 7, 12, 111, 113]     0
    

    With list comprehension:

    df['flag'] = [int(x[0] in x[1]) for x in df[['id', 'idlist']].values.tolist()]
    print (df)
        id                idlist  flag
    0   12    [1, 5, 7, 12, 112]     1
    1  112  [5, 7, 12, 111, 113]     0
    

    Solutions for filtering:

    df = df[df.apply(lambda x: x['id'] in x['idlist'], axis=1)]
    print (df)
       id              idlist
    0  12  [1, 5, 7, 12, 112]
    
    df = df[[x[0] in x[1] for x in df[['id', 'idlist']].values.tolist()]]
    print (df)
    
       id              idlist
    0  12  [1, 5, 7, 12, 112]
    

提交回复
热议问题