关于python:从嵌套字典中删除值的正确方法

Correct Way to Remove Values from Nested Dictionary

我正在处理csv文件中的数据集。

我用这个dic = df.to_dict()把数据导入字典。

这很有效,但是由于数据的结构,我得到了一本字典。嵌套字典有多个"nan"值。我需要删除所有的NaN值,字典可以保持嵌套,也可以使用普通字典。

数据按以下格式从字典中打印:

{'1/13/2018': {0: 'Monday', 1: 'Red', 2: 'Violet', 3: 'Aqua', 4: 'Pink', 5: 'White', 6: nan, 7: nan, 8: nan},

以下是我的代码示例:

1
2
df = pd.read_csv(infile, parse_dates=True, infer_datetime_format=True)
dic = df.to_dict()

我尝试过这里的建议,并试图通过一些理解来做到这一点,但我认为由于嵌套的性质,我不确定如何适应它。

我也试过这样循环:

1
2
3
4
5
6
7
8
9
10
value_list = []
key_list = []

for k, v in dic.items():
    key_list.append(k)
    for c, q in v.items():
        if str(q) != 'nan':
            value_list.append(q)
        else:
            pass

我希望能从这两个列表中创建一个新的dic。然而,数据在一起会模糊,很难分离值集。一定有更好的方法来做这件事。


递归亲爱的操作:

1
2
3
4
5
6
7
8
9
from math import isnan


def remove_nans(d):
    for key in d.copy():
        if type(d[key]) == float and isnan(d[key]):
            del d[key]
        elif type(d[key]) == dict:
            remove_nans(d[key])

打电话给你的dict上的remove_nans就可以了。