同事们,下午好!
帮助解决将列表中的值替换为列的问题。有 2 个数据框(旧的和新的)和一个列表:
spisok = ['伊万诺夫','彼得罗夫','西多罗夫']
df_old:
id score revie_date in_charge
111 4 08.10.2019 Petrov
123 2 04.03.2019 Sidorov
145 5 04.04.2019 Ivanov
135 6 20.05.2019 Petrov
222 5 25.06.2019 Sidorov
df_new
id score revie_date in_charge
367 6 18.07.2019
123 2 04.03.2019
257 5 04.06.2019
945 6 01.05.2019
222 5 25.06.2019
该任务,您需要从 spisok 随机分配一个执行程序,但以使任务或多或少平均分配的方式执行此操作(即数据帧中可以有超过 1000 行)。
与旧列表进行比较,如果有 id 匹配,则从旧列表中取出/替换艺术家。
所以结果会是这样的:
df_new:
id score revie_date in_charge
367 6 18.07.2019 Ivanov
123 2 04.03.2019 Sidorov
257 5 04.06.2019 Petrov
945 6 01.05.2019 Ivanov
222 5 25.06.2019 Sidorov
我试图通过
df_new['in_charge'] = np.random.choice(spisok, size=len(df_new))
但是结果是绝对不一样的,分布不均,然后怎么和前面的df_old比较。
np.random.choice ()函数允许您设置应该从列表中选择相应元素的概率。
您可以尝试使用它 - 为此,您需要计算列表中元素的概率,同时考虑到已经存在的元素。
例子:
首先添加
new值进行匹配id:价值分配:
计算新的概率:
发生了:
按照计算出的概率填入数值:
结果:
PS 由于自然原因,无法实现完美均匀的分布
np.random.choice