数据帧中的Python交互
我有以下数据帧:数据帧中的Python交互,python,pandas,Python,Pandas,我有以下数据帧: exam_id student semester 0 01 a 1 1 02 b 2 2 03 c 3 3 01 d 1 4 02 e 2 5 03 f 3 6 01 g 1 我想创建一个新的数据框架,其中包含四列:
exam_id student semester
0 01 a 1
1 02 b 2
2 03 c 3
3 01 d 1
4 02 e 2
5 03 f 3
6 01 g 1
我想创建一个新的数据框架,其中包含四列:“学生”、“与之共享的考试”、“学期”、“共享考试的数量”
有什么建议吗
idx_cols = ['exam_id', 'semester']
std_cols = ['student_x', 'student_y']
d1 = df.merge(df, on=idx_cols)
d2 = d1.loc[d1.student_x != d1.student_y, idx_cols + std_cols]
d2.loc[:, std_cols] = np.sort(d2.loc[:, std_cols])
d3 = d2.drop_duplicates().groupby(
std_cols + ['semester']).size().reset_index(name='count')
print(d3)
student_x student_y semester count
0 a d 1 1
1 a g 1 1
2 b e 2 1
3 c f 3 1
4 d g 1 1
它的工作原理
- 自我
仅在合并
和学期
考试id上
- 摆脱自我分享
- 对每行学生对进行排序,以便我们可以看到重复的组合
- 放下那些复制品
- 学生分组(包括学期,以便我们在结果中看到)
- 自我
仅在合并
和学期
考试id上
- 摆脱自我分享
- 对每行学生对进行排序,以便我们可以看到重复的组合
- 放下那些复制品
- 学生分组(包括学期,以便我们在结果中看到)
exam\u id
,但在groupby中您使用exam
。删除这个打印错误,代码就会工作。那么到底出了什么问题?@和平现在检查一下!您的colname是exam\u id
,但在groupby中您使用exam
。删除这个印刷错误,代码就会工作。伟大的解决方案!谢谢伟大的解决方案!谢谢
idx_cols = ['exam_id', 'semester']
std_cols = ['student_x', 'student_y']
d1 = df.merge(df, on=idx_cols)
d2 = d1.loc[d1.student_x != d1.student_y, idx_cols + std_cols]
d2.loc[:, std_cols] = np.sort(d2.loc[:, std_cols])
d3 = d2.drop_duplicates().groupby(
std_cols + ['semester']).size().reset_index(name='count')
print(d3)
student_x student_y semester count
0 a d 1 1
1 a g 1 1
2 b e 2 1
3 c f 3 1
4 d g 1 1