Python 如何从DataFrame中具有行值的列表生成中删除NaN值
休伊兄弟们 我在pandas中有一个列,它是一个列表,其中包含行中的所有值。 作为下面的示例Python 如何从DataFrame中具有行值的列表生成中删除NaN值,python,python-3.x,pandas,Python,Python 3.x,Pandas,休伊兄弟们 我在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中尝试了一些传统的列表方法,但
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中尝试了一些传统的列表方法,但是我不知道
使其在数据帧中具有相同的结果
正如这一条:
while True:
try:
df4['PNs NaNs Removed'] = df4['List'].delete([nan])
except ValueError:
break
我试图通过使用Series.dropna函数来避免迭代:
def no_nan(listy):
return list(pd.Series(listy).dropna())
df4['List'] = df4['List'].apply(no_nan)
我试图通过使用Series.dropna函数来避免迭代:
def no_nan(listy):
return list(pd.Series(listy).dropna())
df4['List'] = df4['List'].apply(no_nan)
事实证明,有许多不同的方法来指示和处理
NaN
值,而且可能会变得非常混乱。此解决方案使用pandas.isna()
测试值,该方法适用于比numpy.isnan()
更广泛的值
将熊猫作为pd导入
df4['List']=df4['List'].应用(lambda列值:[列值中的项目,如果不是pd.isna(项目)])
事实证明,有许多不同的方法来指示和处理NaN
值,而且可能会变得非常混乱。此解决方案使用pandas.isna()
测试值,该方法适用于比numpy.isnan()
更广泛的值
将熊猫作为pd导入
df4['List']=df4['List'].应用(lambda列值:[列值中的项目,如果不是pd.isna(项目)])
为什么要将列表存储在数据框中?您想做什么?我创建了一个列,其中包含一个列表,其中包含第行中的值。所以我想从这个列中删除这些“nan”值并保留有效值。我理解您的问题,我很好奇为什么您首先要将列表存储在数据框中。列表中的值是实际的NaN值,不是像“NaN”这样的字符串吗?为什么要将列表存储在数据帧中?您想做什么?我创建了一个列,其中包含一个列表,其中包含第行中的值。所以我想从这个列中删除这些“nan”值并保留有效值。我理解您的问题,我很好奇为什么您首先要将列表存储在数据框中。您列表中的值是实际的NaN值,对吧,不是像“NaN”这样的字符串?代码运行时没有错误,但是NaN
values在列表中。这很奇怪,它对我有效。如果创建一个新列,即df4['List2']=df4['List'].apply(否)?KeyError:'List2'
我自己实际上刚刚找到一个列:转换为序列可能会弄乱类型。我测试的示例是一个整数和Nan
s的列表,它将整数转换为浮点数。所以这是需要注意/小心的。@mermaldad我不知道为什么我在发表评论时没有运行一些基准测试。我也和你一样直觉,它应该更快,我明天会对它进行基准测试并报告回来!代码运行时没有错误,但是列表中有nan
value。奇怪的是,它对我有效。如果创建一个新列,即df4['List2']=df4['List'].apply(否)?KeyError:'List2'
我自己实际上刚刚找到一个列:转换为序列可能会弄乱类型。我测试的示例是一个整数和Nan
s的列表,它将整数转换为浮点数。所以这是需要注意/小心的。@mermaldad我不知道为什么我在发表评论时没有运行一些基准测试。我也和你一样直觉,它应该更快,我明天会对它进行基准测试并报告回来!