将df2中随机选择的值与df1合并

菲利普

所以我有一个Student这样数据框,

ID,STUDENT_ID
1,0123
2,9876
3,4567
4,2986

Courses像这样数据框

ID,COURSE_ID
990,CourseA
991,CourseB
992,CourseC

我想做的是从Courses数据框中随机选择任何2个COURSE_ID,并以以下格式将其附加到每个单独的STUDENT_ID

ID,STUDENT_ID,COURSE_ID
1,0123,CourseA
2,0123,CourseB
3,9876,CourseB
4,9876,CourseC
5,4567,CourseA
6,4567,CourseC
7,2986,CourseA
8,2986,CourseC

基本上,我必须为每个人创建1个副本STUDENT_ID然后选择2个随机数COURSE_IDs,将其STUDENT_ID一个接一个地附加我只需要确保做出随机选择COURSE_IDs每个STUDENT_ID始终是唯一的,即,一个学生应该接受相同的课程的两倍。

我知道我可以用

df1 = df1.append([df1]*1, ignore_index=True)
df1['ID'] = np.arange(1, len(df1) + 1)
df1.sort_values(['STUDENT_ID'], inplace=True)

复制我的STUDENT_IDs

我也知道我可以使用

df2.sample(2)

随机选择2 COURSE_IDs.

但是我不确定如何将这两个结合起来以获得预期的结果。非常感谢您的帮助。提前致谢。

克里斯·A

你可以尝试numpy.hstack在一个列表解析创建您array的随机课程,然后Index.repeatDataFrame.assign创建所需的输出:

import numpy as np

rand_courses = np.hstack([Courses['COURSE_ID'].sample(2).values for i in range(len(Student))])

Student.loc[Student.index.repeat(2)].assign(COURSE_ID=rand_courses, ID=np.arange(len(Student)*2) + 1)

[出]

   ID  STUDENT_ID COURSE_ID
0   1         123   CourseA
0   2         123   CourseC
1   3        9876   CourseB
1   4        9876   CourseA
2   5        4567   CourseA
2   6        4567   CourseB
3   7        2986   CourseB
3   8        2986   CourseA

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从 DF2 替换 DF1 中的值

反向代码以df2中的查找值为条件选择df1中的vars

将df1列中值的两个数据帧合并为df2和df1列中逗号分隔的值.Column2 = df2.Column2

尽管在 Python Pandas 中有共享值,但无法将 df2 合并到 df1?

从DF1中选择行,其中列值与DF2中列的值匹配

将df1列中值的两个数据帧合并为df2列中逗号分隔的值

如何合并 df1 & df2 但只保留 df2 的新行

将df1列1与df2中的所有列进行比较,返回df2的索引

pandas 如何从 df2 获取 df1 的值,而 df1 和 df2 的值在列上重叠

在 df1 中设置与 df2 中的值匹配的值

组合 df1 中的值对应于 df2 中的值的行

Python-检查df2列中是否存在df1列中的值

如果 df2 中的 loc 为 True,则 df1 中的 python 总和值

根据日期时间将df2中的多行添加到df1中

根据df2中的索引将行保留在df1中

如果列值不在df2列中,则获取df1的行

df1 的 xy 列的值是否也出现在 df2 的 zy 列中?

根据df1中的列值在df2中查找相交的值,并使用df1中的检索值创建新列(不匹配的列名)

根据df1上的条件创建pd系列,并报告df2或df3中的值

使用df1中的值从df2中检索值,其中df2列和索引包含一系列值

如何根据其他三列中的特定值将值从df1中的一列复制到df2?

仅当df2中的列中的值位于df1中时,才将2个数据帧附加在一起

如何根据 df2 中两列的日期范围值之间的 df1 中的日期在单独的数据框 (df2) 中查找数据

从df2中的df1中找到一个值,并替换匹配行的其他值

用另一個數據集 (df2) 中的值替換 df1 中的值

检查df2中的datetime列的值是否在R中的df1的datateime值之内

如何对df1中的值与df2中的另一个值进行匹配

将df1与df2匹配,然后将其替换为索引值(非内部联接)

根据 df1 中的值的条件在 df2 中查找行的有效方法