嘗試將此邏輯應(yīng)用于以下DF我有一個(gè)df如下import pandas as pdimport numpy as pddf = pd.read_csv('subjects.csv') SubjectsMediainformation MediaDigital Media然后,我嘗試將我的主題映射到字典,以輸出經(jīng)過驗(yàn)證的corrected_subjectd = {'Media' : 'Film & Media','Information' : 'ICT','Digital' : 'ICT'}df['subject_corrected'] = df['subjects'](lambda x: ', '.join([d[i] for i in d if i in x]))Subjects subject_correctedMedia Film & Mediainformation Media Film & Media, ICTDigital Media Film & Media, ICT現(xiàn)在,通過我的DF使用此循環(huán),在我希望它找到最接近的匹配并退出循環(huán)的地方給了我所有匹配項(xiàng)。因此,數(shù)字媒體將是ICT,而不是媒體我已經(jīng)嘗試了以下方法,但是對我來說并不是一個(gè)好兆頭!為了for k,v in d.items(): if k in df['subjects']: df['subject_corrected'] = d.values():Subjects subject_correctedMedia Film & Mediainformation Media ICTDigital Media ICT我看過很多類似的文章,但無法解決。我會以錯(cuò)誤的方式解決這個(gè)問題,是否應(yīng)該將其傳遞到兩個(gè)列表/數(shù)組中并使用if語句遍歷所有匹配項(xiàng)?dict與2D陣列有何不同?
1 回答

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用:
df['Subjects'].apply(lambda x: ', '.join([d[i] for i in d if i in x])).str.split(', ').str[-1]
輸出:
Subjects subject_corrected
0 Media Film & Media
1 Information Media ICT
2 Digital Media ICT
您也可以通過下面的代碼行直接獲得輸出,只需從列表中獲取最后一個(gè)元素。
df['Subjects'].apply(lambda x: [d[i] for i in d if i in x][-1])
添加回答
舉報(bào)
0/150
提交
取消