首页 > 解决方案 > 如何根据列中唯一值的数量从字典中删除/删除数据框?

问题描述

我有一个包含 12 个dfs名称的字典,f每个df都有相同的列:BacksGas_Flow_sccm, ContextID, StepID,Time_Elapsed, iso_forest, alarm.

我要做的是计算BacksGas_Flow_sccm列中唯一值的数量,如果数字 id 唯一值小于 10,我想df从字典中删除它。

我试着做这样的事情:

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

关于如何做到这一点的任何建议?

PS:

BacksGas_Flow_sccm在所有的唯一值的数量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,所以很难在df此处发布示例。但这就是我的dfs字典

在此处输入图像描述

标签: pythonpython-3.xpandasdataframe

解决方案


Celius Stingher 对错误原因的看法是正确的

我认为删除循环中的项目后,索引会重置,这就是为什么您可能会收到错误 [....]

这应该有效。

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

推荐阅读