如果NaN在列表列表中,则删除列表

2022-04-14 00:00:00 python nan nested-lists

问题描述

我有一个来自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()

图片示例如下

相关文章