伙计们,
我在pandas中有一列,是一列包含来自row的所有值的列表。 作为下面的示例。
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中尝试了一些常规的list方法,但是我没有 使其在pandas DataFrame中具有相同的结果。
因为这个:
while True:
try:
df4['PNs NaNs Removed'] = df4['List'].delete([nan])
except ValueError:
break
答案 0 :(得分:0)
我试图通过使用Series.dropna函数来避免迭代:
def no_nan(listy):
return list(pd.Series(listy).dropna())
df4['List'] = df4['List'].apply(no_nan)
答案 1 :(得分:0)
事实证明,有许多不同的方式来指示和处理NaN
值,并且它可能变得很混乱。此解决方案使用pandas.isna()
测试值,该值应比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)])
答案 2 :(得分:-1)