[英]Partial string match with str.contains using dict comprehension with python/pandas
我有一個數據框,其中包含一個名為course_names
的列, course_names
包含一個映射字典,其中包含我希望在鍵中匹配的課程名稱列表以及我希望在值列中分配的值
import pandas as pd
df = pd.DataFrame({'course_name' : ['Phsyics, Maths','Algebra & Maths','History','Geology','Biology']})
mapping = {'Algebra & Maths' : 'Mathematics',
'Phsyics' : 'Science',
'History' : 'History',
'Geology' : 'Geology',
'Biology' : 'Science'}
# this goes on for about another 35 lines.
#my attempt so far.
df['keys'] = [k for k, v in mapping.items() if df['course_name'] in k]
當我運行此代碼時,我得到:
TypeError: 'in <string>' requires string as left operand, not Series
預期輸出:
course_name key
0 Phsyics, Maths Science
1 Algebra & Maths Mathematics
2 History History
3 Geology Geology
4 Biology Science
你有一個小的語法錯誤。 您也可以使用map
嘗試:
import pandas as pd
df = pd.DataFrame({"course_name" : ["Algebra & Maths", "Phsyics"]})
Mapping = {'Algebra & Maths' : 'Mathematics','Phsyics' : 'Science'}
df["keys"] = [v for k, v in Mapping.items() if k in df['course_name'].tolist()]
#df["keys"] = df["course_name"].map(Mapping)
print(df)
輸出:
course_name keys
0 Algebra & Maths Mathematics
1 Phsyics Science
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.