从列表Python中删除nan

2024-09-30 04:37:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从列表中删除“nan”,但它拒绝删除。我都试过了np.nan公司还有“南”。在

这是我的代码:

ztt = []
for i in z:
    if i != 'nan':
        ztt.append(i) 
ztt

或者:

^{pr2}$

我仍然得到输出:

[[46.0, 34.0, 32.0, 40.0, 34.0, 29.0, 38.0, 39.0, 45.0, 32.0, 28.0, 43.0],
 [32.0, 30.0, 67.0, 66.0, 28.0, 19.0, 39.0, 32.0, 51.0, 28.0, 20.0, 36.0],
 [29.0, 24.0, 37.0, 31.0, 32.0, 34.0, 28.0, 31.0, 28.0, 33.0, 28.0, 39.0],
 [27.0, 29.0, 35.0, nan, nan, nan, nan, nan, nan, nan, nan, nan]]

有人知道出什么问题了吗?在


Tags: 代码in列表forifnp公司nan
3条回答

在你的例子中,nan不需要引号,因为nan是一个特殊的数字。当它被引用时,它就变成了一个字符串类型。所以应该是这样的:

ztt = []
for i in z:
    if !math.isnan(i)
        ztt.append(i) 
ztt

或者

^{pr2}$
ztt = []
for z_i in z:
    row = []
    for z_ij in z_i:
        if math.isnan(z_ij):
            row.append(z_ij)
        # If you want to replace with, for example, 0:
        # else:
        #     row.append(0)
    ztt.append(row)

或者,使用嵌套列表理解:

^{pr2}$

顺便说一句,如果您使用的是NumPy,您可能只需执行以下操作:

import numpy as np

ztt =[value[~np.isnan(value)] for value in z]
for i in z:
    if not math.isnan(i):
        ztt.append(i)

相关问题 更多 >

    热门问题