我发现自己NA在 Pandas 的领域里遇到了很多困难。这是一个例子:audio =('all_audio_languages', lambda x: str(sorted({l.lower() for ls in x.dropna() for l in ls}))),AttributeError:“NoneType”对象没有属性“lower”现在,我认为这x.dropna()会删除所有 NA/None/等等。类型,但似乎它们仍然在那里。有没有一种方法可以基本上做一个“硬” dropna(),它摆脱所有会(bool)评估的东西False?示例数据(虽然它是一个很大的数据框,所以不确定下面是否包含有问题的数据):all_audio_languages['en']['en']['en']['LAS', 'en']['LAS', 'en']['en']['en'][]
1 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
我相信你需要过滤掉None
或NaN
通过notna
:
f = lambda x: str(sorted({l.lower() for ls in x.dropna() for l in ls if pd.notna(l)}))
audio = ('all_audio_languages', f)
不容易测试,但我尝试了一下(功能已更改):
df = pd.DataFrame({'all_audio_languages':[['Las','LAS', 'en', None], ['en','LAS']]})
print (df)
all_audio_languages
0 [Las, LAS, en, None]
1 [en, LAS]
f = lambda x: str(sorted({l.lower() for l in x if pd.notna(l)}))
print (df['all_audio_languages'].apply(f))
0 ['en', 'las']
1 ['en', 'las']
Name: all_audio_languages, dtype: object
添加回答
举报
0/150
提交
取消