我正在尝试迭代数据框并更新每一行,但没有累加。逻辑是,当关键字与skill_list const renderCalendarDays = ()=>{
return getDaysWithEvents().map((day, index) => {
const isToday = Calendar.interval(day, today) === 1;
console.log(isToday)
const events = renderEvents(day);
return (
<CalendarDay
key={'day_'+getSerializedDay(day)}
day={day}
events={events}
isToday={isToday}
onClick={props.onDayClick}
onMouseOut={props.onEventMouseOut}
onMouseOver={props.onEventMouseOver}
/>
);
});
}
中的任何字符串匹配时,然后更新分数。
final_database
['java', 'sql', 'oracle', 'json']
代码
Subject Keyword Count
0 Mobile_Application_Developer android 2
1 Mobile_Application_Developer sql 1
2 Mobile_Application_Developer java 1
0 Mobile_Application_Developer N/A 0
0 Mobile_Application_Developer sql 3
0 Mobile_Application_Developer sql 2
1 Mobile_Application_Developer java 4
2 Mobile_Application_Developer engineering 2
3 Mobile_Application_Developer javascript 1
0 Mobile_Application_Developer N/A 0
0 Mobile_Application_Developer N/A 0
0 Mobile_Application_Developer engineering 1
0 Mobile_Application_Developer N/A 0
0 Mobile_Application_Developer building 1
0 Mobile_Application_Developer engineering 2
0 Mobile_Application_Developer N/A 0
0 Mobile_Application_Developer engineering 1
0 Mobile_Application_Developer N/A 0
更新后的final_database
skill= "java:4,sql:3,oracle:2,json:4"
keyword_list = re.split(',', skill)
skill_list = []
total_score = 0
for x in range(len(keyword_list)):
lang = re.split(':', keyword_list[x])
skill_list.append(lang[0])
total_score = total_score + int(lang[1])
for index, row in final_database.iterrows():
for x in range(len(keyword_list)):
lang = re.split(':', keyword_list[x])
if row['Keyword'].strip() in skill_list:
final_database.set_value(index,'Score',lang[1])
答案 0 :(得分:1)
这是一个解决方案:
skill= "java:4,sql:3,oracle:2,json:4"
skill_map=dict(map(lambda x: x.split(":"), skill.split(",")))
df["Score"]=df["Keyword"].str.strip().map(skill_map).fillna(0)
输出:
Subject Keyword Count Score
0 Mobile_Application_Developer android 2 0
1 Mobile_Application_Developer sql 1 3
2 Mobile_Application_Developer java 1 4
3 Mobile_Application_Developer N/A 0 0
4 Mobile_Application_Developer sql 3 3
5 Mobile_Application_Developer sql 2 3
6 Mobile_Application_Developer java 4 4
7 Mobile_Application_Developer engineering 2 0
8 Mobile_Application_Developer javascript 1 0
9 Mobile_Application_Developer N/A 0 0
10 Mobile_Application_Developer N/A 0 0
11 Mobile_Application_Developer engineering 1 0
12 Mobile_Application_Developer N/A 0 0
13 Mobile_Application_Developer building 1 0
14 Mobile_Application_Developer engineering 2 0
15 Mobile_Application_Developer N/A 0 0
16 Mobile_Application_Developer engineering 1 0
17 Mobile_Application_Developer N/A 0 0
答案 1 :(得分:0)
如果我的理解正确,您想将map
的关键字添加到得分中。
keyword_mapping={'java':4, 'sql':3, 'oracle':2, 'json':4}
final_database['score']=final_database.keyword.str.lower().map(keyword_mapping)
说明:
我已经使用了数据帧final_database并已经使用了一系列的关键字列。在这种情况下,我使用lower
来使用pandas string methods获得小写的值
然后,我使用键(关键字)及其对应值(分数)的字典应用了地图
答案 2 :(得分:0)
skills = {'java':4,
'sql': 3,
'oracle' : 2,
'json':4}
df['score'] = df.loc[df['Keyword']].map(skills)