在 pandas 中删除 NA(ish?) 字段

我发现自己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']

[]


小怪兽爱吃肉
浏览 93回答 1
1回答

吃鸡游戏

我相信你需要过滤掉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_languages0  [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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python