分享
三行代码  ›  专栏  ›  技术社区  ›  Junkrat

如何根据列中唯一值的数目从字典中删除数据帧? - How to drop/delete dataframes from a dictionary based on the number of unique values in a column?

  •  1
  • Junkrat  · 技术社区  · 1 周前

    我有一本12人的字典 dfs 命名 f 每一个 df 具有相同的列: BacksGas_Flow_sccm, ContextID, StepID,Time_Elapsed, iso_forest, alarm .

    我要做的是计算 BacksGas_Flow_sccm 如果number id unique值小于10,则删除 东风 从字典里。

    我试过这样做:

    v = list(f.values())
    
    for i in range (0, len(v)):
        if (v[i]['BacksGas_Flow_sccm'].nunique()) < 10:
            del (v[i])
    

    但我得到了以下错误:

    Traceback (most recent call last):
    
      File "<ipython-input-8-580f2e039fa5>", line 2, in <module>
        if (v[i]['BacksGas_Flow_sccm'].nunique()) < 10:
    
    IndexError: list index out of range
    

    关于我该怎么做有什么建议吗?

    附笔:

    中唯一值的数目 反向气流 在所有 DFS

    df    unique values
    1          2
    2          5
    3         373
    4          2
    5          4
    6          3
    7          4
    8         560
    9         141
    10         4
    11         5
    12         4
    

    我想放弃所有 DFS 在字典里除了3,8和9。

    我知道分享 DFS ,但由于有多个 DFS ,很难发布样本 东风 在这里。但这就是我的字典 DFS

    enter image description here

    1 回复  |  直到 1 周前
        1
  •  3
  •   Harsha    1 周前

    西利斯·斯廷格关于错误的原因是对的

    我认为在删除循环中的一个项之后,索引将重置并 这就是为什么你可能会得到错误的原因。

    这应该管用。

    dictNew = dict()
    for key,value in f.items():
        if (value['BacksGas_Flow_sccm'].nunique()>=10):
            dictNew[key] = value
    f = dictNew