gpt4 book ai didi

python - 如何在Python中替换字典中的NaN

转载 作者:行者123 更新时间:2023-12-01 08:56:04 25 4
gpt4 key购买 nike

我有以下代码:

my_dataset={'item1':{'item11':0,'item12':'NaN','item13':2},'item2':{'item21':0,'item22':'NaN','item23':2}}
my_dataset_clean=my_dataset
for item in my_dataset:
my_dataset_clean[item] = {k: 0 for k in my_dataset[item] if isnan(my_dataset[item][k])}

我收到此错误:

my_dataset_clean[item] = {k: 0 for k in my_dataset[item] if isnan(my_dataset[item][k])} TypeError: must be real number, not str

关于如何解决这个问题有什么想法吗?我想用 0 替换 NaN

最佳答案

您需要将 'NaN' 作为字符串进行检查,而不是使用需要数值的 isnan (大概是 np.isnan)。但还有其他几点值得注意:

  1. 您没有定义当您的值不是'NaN'时会发生什么。如果没有这个,您将失去其他元素。请参阅下文了解如何定义三元语句。
  2. my_dataset_clean = my_dataset 不会创建字典的副本。你需要明确,例如my_dataset_clean = my_dataset.copy(),执行此操作。否则你只有 2 个变量指向同一个字典。
  3. 您可以使用字典理解来避免复制字典。

这是一个带有字典理解和三元语句的示例:

my_dataset_clean = {k: {k2: 0 if v2 == 'NaN' else v2 for k2, v2 in v.items()} \
for k, v in my_dataset.items()}

这里k, v指的是外部字典中的键/值,k2, v2指的是内部字典中的键/值。

关于python - 如何在Python中替换字典中的NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52761325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com