【发布时间】:2020-01-04 20:22:02
【问题描述】:
我正在尝试执行以下操作:确定嵌套列表中是否存在“NA”值,如果存在,则将其替换为列表中其他元素之和的平均值。列表的元素应该是浮点数。例如:
[["1.2","3.1","0.2"],["44.0","NA","90.0"]]
应该返回
[[1.2, 3.1, 0.2], [44.0, 67.0, 90.0]]
下面的代码虽然冗长且冗长,但可以正常工作:
def convert_data(data):
first = []
second = []
third = []
fourth = []
count = 0
for i in data:
for y in i:
if 'NA' not in i:
y = float(y)
first.append(y)
elif 'NA' in i:
a = i.index('NA')
second.append(y)
second[a] = 0
for q in second:
q = float(q)
third.append(q)
count+= q
length = len(third)
count = count/(length-1)
third[a] = count
fourth.extend([first,third])
return fourth
data = [["1.2","3.1","0.2"],["44.0","NA","90.0"]]
convert_data(data)
例如:
data = [["1.2","3.1","0.2"],["44.0","NA","90.0"]]
convert_data(data)
返回所需的输出:
[[1.2, 3.1, 0.2], [44.0, 67.0, 90.0]]
但如果“NA”在第一个列表中,例如
data = [["1.2","NA","0.2"],["44.0","67.00","90.0"]]
那么它不会。有人可以解释一下如何解决这个问题吗?
【问题讨论】:
-
有些人建议您需要导入第三方计算包来处理这样的简单计算,这太疯狂了。
-
@BenQuigley 然而,这完全取决于 OP 程序的其余部分。如果他们对明显是表格数据的内容执行大量操作,他们应该使用更合适的工具。
-
OP,我认为我们需要您提供更多信息才能正确回答此问题。除了我上面提到的关于你的程序和数据的其余部分,例如,子列表是否总是包含 3 个元素?
-
我忘了补充:如果子列表完全由
'NA'值组成会怎样?当我们讨论这个话题时,像这样使用字符串'NA'可能是个坏主意。 -
@AMC 它应该返回 0。 Bhosale Shrikant 分享的代码就像一个魅力。关于元素,它们不必在列表中始终为 3。我的确实有效,但每个列表不超过一个“NA”。
标签: python nested-loops nested-lists