如果NaN在列表列表中,则删除列表
问题描述
我有一个来自Pandas数据框的列表,其中包含NaN值。我想删除包含任何NaN值的所有列表。然后绘制剩余的值。
示例
test = [[1,2],[1,nan],[3,4]]
最终结果
test = [[1,2],[3,4]]
如果可能的话,我还想用任何绘制方法从最终结果绘制一张图。如果您能在这方面提供任何帮助,我们将不胜感激。
很抱歉这个问题造成了混乱,列表列表取自 pandas 数据框,因此在示例中出现了NaN。我希望保持数据框不变,并希望使用列表列表
解决方案
从列表中删除值
使用filter
nan
不是正确的Python语法,仅在Pandas
库中使用。因此,我将用None
替换此值。
我们可以使用filter
函数删除列表中包含nan
值的任何值。
test = list(filter(lambda x: None not in x, test))
使用列表理解
编辑:应为x
而不是test
。感谢@源泉
test=[x在测试中,如果没有x则不在测试中]
test = [x for x in test if None not in x]
两者都将返回一个列表,其中的值不包含None
绘制
我们可以使用名为matplotlib
的库来绘制图形。例如,要创建散点图:
import matplotlib.pyplot as plt
plt.scatter(x, y)
其中plt.displter分别接受行和列的x值和y值。完整代码如下:
import matplotlib.pyplot as plt
test = [[1,2],[1,None],[3,4]]
test = list(filter(lambda x: None not in x, test))
x = [x for x,y in test]
y = [y for x,y in test]
# Assume all first elements are x values second elements are y values
plt.scatter(x, y)
plt.show()
图片示例如下
相关文章