我发现自己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 / etc。类型,但似乎它们仍然在那里。有没有一种方法可以从根本上做到“艰苦” dropna()
,从而摆脱(布尔)评估的一切False
?
示例数据(尽管它是一个大数据框,所以不确定下面是否包含有问题的数据):
all_audio_languages
['en']
['en']
['en']
['LAS', 'en']
['LAS', 'en']
['en']
['en']
[]
我相信您需要过滤掉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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句