首页 > 解决方案 > 如何使用 Pandas DataFrame 中的行值从列表构建中删除 NaN 值

问题描述

伙计们,

我在 pandas 中有一个列,它是一个包含行中所有值的列表。作为下面的示例。

print(df4['List']) 

0 [8,9,10,25,14,25,14,17,19,30]
1 [nan,85,48,75,nan,96,32,14,15,21,28,17,nan]
2 [nan,85,48,75,nan,]
3 [1,nan]
4 [85,75,41,nan]
5 [nan,65,34]

如何从我的列表中删除这些“nan”值?

我在python中尝试了一些传统的列表方法,但是我没有让它在pandas DataFrame中具有相同的结果。

作为这个:

while True:
    try:
        df4['PNs NaNs Removed'] = df4['List'].delete([nan])
    except ValueError:
        break

标签: pythonpython-3.xpandas

解决方案


事实证明,有许多不同的方法来指示和处理NaN值,而且会变得非常混乱。此解决方案测试使用pandas.isna()which 应该适用于比numpy.isnan().

import pandas as pd


df4['List'] = df4['List'].apply(lambda col_val: [item for item in col_val if not pd.isna(item)])

推荐阅读