Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何重命名打字不好的学生';基于引用列表的数据帧列中的名称_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 如何重命名打字不好的学生';基于引用列表的数据帧列中的名称

Python 3.x 如何重命名打字不好的学生';基于引用列表的数据帧列中的名称,python-3.x,pandas,Python 3.x,Pandas,我们在每节课后都有一个学生在上苏格拉底式的MCQ 他们先输入自己的名字,然后输入anwser。对于每节课,我们从苏格拉底平台收集数据,但“规范化名称”存在问题,例如“约翰·多伊”、“约翰·多伊”或“约翰·多伊”可以转换为“多伊”,因为它是我们的主文件 我们跟踪学生的主文件(用python作为数据框架处理)最初只有一列,即名称(作为John doe先生的字符串“doe”) 我想写一个函数,遍历我的lesson1 dataframe的“name”列,对于name列的每个值,用引用名替换输入错误的名称

我们在每节课后都有一个学生在上苏格拉底式的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替换字典和预期输出将很有帮助