Python 3.x 如何重命名打字不好的学生';基于引用列表的数据帧列中的名称
我们在每节课后都有一个学生在上苏格拉底式的MCQ 他们先输入自己的名字,然后输入anwser。对于每节课,我们从苏格拉底平台收集数据,但“规范化名称”存在问题,例如“约翰·多伊”、“约翰·多伊”或“约翰·多伊”可以转换为“多伊”,因为它是我们的主文件 我们跟踪学生的主文件(用python作为数据框架处理)最初只有一列,即名称(作为John doe先生的字符串“doe”) 我想写一个函数,遍历我的lesson1 dataframe的“name”列,对于name列的每个值,用引用名替换输入错误的名称 为了降低大小写,抑制过多的空格和标点符号,我使用了以下代码Python 3.x 如何重命名打字不好的学生';基于引用列表的数据帧列中的名称,python-3.x,pandas,Python 3.x,Pandas,我们在每节课后都有一个学生在上苏格拉底式的MCQ 他们先输入自己的名字,然后输入anwser。对于每节课,我们从苏格拉底平台收集数据,但“规范化名称”存在问题,例如“约翰·多伊”、“约翰·多伊”或“约翰·多伊”可以转换为“多伊”,因为它是我们的主文件 我们跟踪学生的主文件(用python作为数据框架处理)最初只有一列,即名称(作为John doe先生的字符串“doe”) 我想写一个函数,遍历我的lesson1 dataframe的“name”列,对于name列的每个值,用引用名替换输入错误的名称
lesson1["name"] = lesson1["name"].str.lower()
lesson1["name"] = lesson1["name"].str.strip()
import re
lesson1["name"]=lesson1["name"].apply(lambda x : re.sub('[^A-Za-z0-9]+', '', x))
然后我想更改引用名称的“name”值,这是必要的
我在两个列表中尝试了以下代码
bad=lesson1['name']
good=reference['name']
def changenames(lesson_list, reference_list):
for i,name in enumerate(lesson_list):
for j,ref in enumerate(reference_list):
if ref in name:
lesson_list[i]=ref
changenames(bad,good)
但1/由于设置了CopyWarning,因此无法工作
2/我无法将其应用于数据帧的列
你能帮我吗?
谢谢
L.我找到了一个办法
我有两个数据帧
-参考列表数据框,包含学生姓名。它有一列“name”
-当学生回答MCQ(非标准化)和MCQ答案时,课程数据框中包含学生键入的名称
为了转换课程数据框中学生的姓名,基于参考_列表['name']中的井类型名称,我使用了:
for i in lesson['name']:
for ref in reference_list['name']:
if ref in i:
lesson.loc[lesson['name'] == i, 'name']=ref
而且效果很好,
之后,您可以应用函数来处理重复项、合并数据
我在这个帖子里找到了帮助
希望它能帮助你们中的一些人。
Louis一份ur数据样本、ur替换字典和预期输出将很有帮助