我有一个Pandas数据帧df
,如下所示:
A B
1 1 [a,b,d,d]
2 6 [,1,4,d,g]
3 a [w,1,NaN,x,y,2]
我需要删除第2行中的空白和第3行中的NaN以获取:
A B
1 1 [a,b,d,d]
2 6 [1,4,d,g]
3 a [w,1,x,y,2]
我认为应用某种lambda列表理解?
df.B=df.B.apply(lambda x: x if x not in ['',np.NaN])
但没有工作......
答案 0 :(得分:3)
你需要学习你的理解能力:)
import numpy as np
df = pd.DataFrame([
[1, ['a','b','d','d']],
[6, ['',1,4,'d','g']],
['a', ['w',1,np.nan,'x','y',2]]
], columns=['A', 'B'])
df.B.apply(lambda l: [x for x in l if x not in ['', np.nan]])
其中l
是当前列表,x
是l
的元素。