我有一个数据框,其中有一列名为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
Try:
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)
Output:
course_name keys
0 Algebra & Maths Mathematics
1 Phsyics Science
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)