Python 2.7 使用熊猫模块创建成绩册
因此,我最近开始教授一门课程,并希望使用python和pandas模块处理我的成绩。在这门课上,学生们分组作业,每桌交一份作业。我有一个所有学生的文件,格式如下Python 2.7 使用熊猫模块创建成绩册,python-2.7,pandas,Python 2.7,Pandas,因此,我最近开始教授一门课程,并希望使用python和pandas模块处理我的成绩。在这门课上,学生们分组作业,每桌交一份作业。我有一个所有学生的文件,格式如下 Name, Email, Table "John Doe", jdoe@school.edu, 3 "Jane Doe", jane@gmail.com, 5 . . . 还有一个文件,上面写着每个表格的作业成绩 Table, worksheet, another assignment, etc 1, 8, 15, 4 2, 9, 2
Name, Email, Table
"John Doe", jdoe@school.edu, 3
"Jane Doe", jane@gmail.com, 5
.
.
.
还有一个文件,上面写着每个表格的作业成绩
Table, worksheet, another assignment, etc
1, 8, 15, 4
2, 9, 23, 5
3, 3, 20, 7
.
.
.
我想做的是根据每个学生的表号为他们分配适当的分数。这就是我所做的
import pandas as pd
t_data = pd.read_csv('table_grades.csv')
roster = pd.read_csv('roster.csv')
for i in range(1, len(t_data.columns)):
x = []
for j in range(len(roster)):
for k in range(len(t_data)):
if roster.Table.values[j] == k+1:
x.append(t_data[t_data.columns.values[i]][k])
roster[t_data.columns.values[i]] = x
这正是我想要的,但我觉得一定有更好的方法来完成这样的任务,使用熊猫。我对熊猫还不熟悉,非常感谢大家的帮助 IIUC——不幸的是,您的代码没有与您的数据一起为我运行,并且您没有给出示例输出,因此我不能确定——您正在寻找merge
。将新学生Fred Smith添加到表3:
In [182]: roster.merge(t_data, on="Table")
Out[182]:
Name Email Table worksheet another assignment etc
0 John Doe jdoe@school.edu 3 3 20 7
1 Fred Smith fsmith@example.com 3 3 20 7
[2 rows x 6 columns]
或者外部合并,以便更容易发现丢失/未对齐的数据:
In [183]: roster.merge(t_data, on="Table", how="outer")
Out[183]:
Name Email Table worksheet another assignment etc
0 John Doe jdoe@school.edu 3 3 20 7
1 Fred Smith fsmith@example.com 3 3 20 7
2 Jane Doe jane@gmail.com 5 NaN NaN NaN
3 NaN NaN 1 8 15 4
4 NaN NaN 2 9 23 5
[5 rows x 6 columns]
我会这样做
import pandas as pd
from StringIO import StringIO
roster = pd.read_csv(\
StringIO("""Name,Email,Table
'John Doe', jdoe@school.edu, 1
'Jane Doe', jane@gmail.com, 3
'Jack Doe', jack@gmail.com, 2"""))
t_data = pd.read_csv(\
StringIO("""Table,worksheet,another assignment,etc
1, 8, 15, 4
2, 9, 23, 5
3, 3, 20, 7"""))
roster=roster.set_index('Table')
res = pd.concat((roster.loc[t_data.Table].set_index(t_data.index), t_data), axis=1)
结果是
Name Email Table worksheet another assignment etc
0 'John Doe' jdoe@school.edu 1 8 15 4
1 'Jack Doe' jack@gmail.com 2 9 23 5
2 'Jane Doe' jane@gmail.com 3 3 20 7