代码之家  ›  专栏  ›  技术社区  ›  Vishnudev Krishnadas

基于字典的数据帧字符串搜索

  •  1
  • Vishnudev Krishnadas  · 技术社区  · 7 年前

    使用字符串包含和字典标记数据帧

      a    b
    0  x  abc
    1  a    z
    

    还有一本字典

    columns = {'a':['abc'], 'b':['xyz', 'abc']}
    

    我已经实现了使用for循环

    代码:

    for col, strings in columns.items():
        df[col] = df[col].str.contains('|'.join(strings), case=False)
    

    输出:

          a      b
    0  False   True
    1  False  False
    

    1 回复  |  直到 7 年前
        1
  •  2
  •   Space Impact    7 年前

    使用 list comprehension 在工作时加速 strings :

    df = pd.DataFrame(np.array([[True if value in columns[col] else False for value in df[col]] for col in df.columns]).T,
                      columns = df.columns)
    
    
    print(df)
           a      b
    0  False   True
    1  False  False