我發(fā)現(xiàn)自己NA在 Pandas 的領(lǐng)域里遇到了很多困難。這是一個(gè)例子:audio =('all_audio_languages', lambda x: str(sorted({l.lower() for ls in x.dropna() for l in ls}))),AttributeError:“NoneType”對象沒有屬性“l(fā)ower”現(xiàn)在,我認(rèn)為這x.dropna()會(huì)刪除所有 NA/None/等等。類型,但似乎它們?nèi)匀辉谀抢?。有沒有一種方法可以基本上做一個(gè)“硬” dropna(),它擺脫所有會(huì)(bool)評估的東西False?示例數(shù)據(jù)(雖然它是一個(gè)很大的數(shù)據(jù)框,所以不確定下面是否包含有問題的數(shù)據(jù)):all_audio_languages['en']['en']['en']['LAS', 'en']['LAS', 'en']['en']['en'][]
1 回答

吃雞游戲
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
我相信你需要過濾掉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
添加回答
舉報(bào)
0/150
提交
取消