代码之家  ›  专栏  ›  技术社区  ›  holastello

获取Pandas数据框中的列表与外部列表之间的差异

  •  1
  • holastello  · 技术社区  · 7 年前

    我想了解一下 IDs 和列表 all_IDs ,并将此结果写入新列 IDs_missing 在我的熊猫数据框中。在我的例子中,列表总是包含唯一的值。

    >>> all_IDs = ['A','B','C','D','E','F']
    >>> df = pd.DataFrame([{'IDs': ['B','C','F']}, {'IDs': ['A','B']}])
    
    >>> df
         IDs
    0  [B, C, F]
    1     [A, B]
    

    预期产量:

    >>>df
          IDs         IDs_missing
    0   [B, C, F]     [A, D, E]
    1    [A, B]       [C, D, E, F]
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   rafaelc    7 年前

    使用集合差异(运算符 - )利用 broadcasting

    set(all_IDs) - df.IDs.transform(set) 
    
    0       (D, A, E)
    1    (D, F, C, E)
    
        2
  •  0
  •   Inder Manali    7 年前

    一种方法是:

    emp=[]
    for i in range(len(df)):
        emp.append([x for x in all_IDs if x not in df["IDs"][i]])
    
    df["missing"]=emp 
    

    这将为您提供一个列表,其中列出了数据帧输出中缺少的所有id,如下所示

        IDs         missing
    0   [B, C, F]   [A, D, E]
    1   [A, B]  [C, D, E, F]