我具有以下结构:
list_of_tuples = [['portugal', np.nan, 'japan'], [np.nan, 'germany', 'canada'], ['UK', 'US', np.nan]]
我想更改 MissingValue 的numpy nan值,然后返回到元组列表:
final_structure = [('portugal', 'MissingValue', 'japan'), ('MissingValue', 'germany', 'canada'), ('UK', 'US', 'MissingValue')]
如何在不迭代所有元素的情况下替换给定条件的元素?有没有一个陈述?
答案 0 :(得分:2)
没有迭代就无法做到,因为元组是不可变的。但是,您可以使用列表推导在一行内创建新的元组列表,紧跟在
之后final_structure = [ tuple([ j if isinstance(j, str) else "MissingValue" for j in l ]) for l in list_of_tuples ]
在特定情况下,您可以使用内在函数np.nan
用"MissingValue"
替换不是字符串(isinstance()
)的所有内容。
答案 1 :(得分:1)
这是一种方法。
import numpy as np
list_of_tuples = [['portugal', np.nan, 'japan'], [np.nan, 'germany', 'canada'], ['UK', 'US', np.nan]]
list_of_tuples = map(lambda x: tuple(["MissingValue" if i is np.nan else i for i in x]), list_of_tuples)
print(list_of_tuples)
输出:
[('portugal', 'MissingValue', 'japan'), ('MissingValue', 'germany', 'canada'), ('UK', 'US', 'MissingValue')]