python - 将随机浮点列添加到数据框中,但对于相同的数据框条目具有相同的值

标签 python pandas numpy dataframe random

我有一列整数,有些是唯一的,有些是相同的。我想在每行添加一列 0 到 1 之间的随机 float ,但我希望所有 float 的每个整数都相同。

我提供的代码显示了一列整数和第二列随机 float ,但我需要相同整数的 float (例如 1、1 和 1,或 6 和 6)都相同,同时仍然具有分配给随机生成的 int 的任何 float 。然而,我正在使用的整数是 8 位数字,并且我正在使用的数据集约为 500,000 行,因此我试图尽可能提高效率。

我创建了一个工作解决方案,它迭代已创建的数据框,但创建随机列,然后像整数一样迭代检查需要很长时间。我不确定是否有更有效的方法。

import numpy as np
import pandas as pd

col1 = [1,1,1,2,3,3,3,4,5,6,6,7]
col2 = np.random.uniform(0,1,12)

data = np.array([col1, col2])

df1 = pd.DataFrame(data=data)
df1 = df1.transpose()

最佳答案

groupby之后使用transform:

col1 = [1,1,1,2,3,3,3,4,5,6,6,7]
df = pd.DataFrame(col1, columns=['Col1'])

df['Col2'] = df.groupby('Col1')['Col1'].transform(lambda x: np.random.rand())

结果:

    Col1      Col2
0      1  0.304472
1      1  0.304472
2      1  0.304472
3      2  0.883114
4      3  0.381417
5      3  0.381417
6      3  0.381417
7      4  0.668433
8      5  0.365895
9      6  0.484803
10     6  0.484803
11     7  0.403913

在我的旧笔记本电脑上,600K 行大约需要 200 毫秒。

关于python - 将随机浮点列添加到数据框中,但对于相同的数据框条目具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117561/

相关文章:

python - 更改 url 参数

python - 将数据传输到 excel 时如何处理 "old"日期

python - NumPy:计算累积中位数

python - 在 Numpy 中是否有更快的方法来做到这一点?

python - 为什么 scipy 和 numpy fft 图看起来不同?

python - 通过网络发送加密消息时的 Cryptography.fernet.InvalidToken

python - 如何获取包含另一个集合中的键的文档计数

python - 从 MySQL DB 中的 python 中的一个字段获取值

python - 基于列表填充数据框列

python - 将带有 Numpy 值的 pandas Dataframe 转换为 pysparkSQL.DataFrame