python - 使用 Pandas 的赋值和 Lambda 函数向每行添加 Rand

标签 python pandas random lambda assign

如何将随机数传递给 lambda 函数,以便 pandas assign 使用我向每一行添加不同的随机数。

我最初的尝试,

df = pd.DataFrame({'cat': [1]*10 + [0]*10,
                   'value': [3]*5 + [2]*5 + [2]*2 + [3]*8})

df.assign(cat=lambda df: df.cat + np.random.rand(1)).head(3)

Out[1]:
     cat        value
0   1.962857    3
1   1.962857    3
2   1.962857    3

我们在这里看到随机数 0.962857 已添加到所有行。但我希望每一行都有不同的rand。我怎样才能做到这一点?

最佳答案

更改1,因为按DataFramelength将标量返回到数组:

print (np.random.rand(1))
[ 0.88642869]

print (np.random.rand(len(df)))

[ 0.42677701  0.89968857  0.87976326  0.07758206  0.43617027  0.03221375
  0.46398119  0.14226246  0.14237448  0.22679517  0.60271752  0.85003435
  0.5676184   0.87565266  0.89830548  0.27066452  0.23907483  0.73784657
  0.09083235  0.98984701]
<小时/>
df = df.assign(cat=lambda df: df.cat + np.random.rand(len(df))).head(3)
print (df)
        cat  value
0  1.886429      3
1  1.426777      3
2  1.899689      3

关于python - 使用 Pandas 的赋值和 Lambda 函数向每行添加 Rand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48558077/

相关文章:

python - 当CPython设置 `in`运算符为O(n)吗?

python - 运行连接到 Django 测试数据库的 Celery worker

python - 在引用列的同时将函数 rowwise 应用到 pandas 数据帧

ruby-on-rails - 更好的随机化方法 (Ruby/Rails 3)

python - Keras 逻辑回归在第一个纪元返回 nan

python - 为什么我在 Okta OAuth2.0/api/v1/authorize 端点上得到 'E0000022'?

python - Pandas - 填充时间序列数据中缺失的时间

python - 如何用 timedelta (python) 减去两个时间列?

python - 如何使用 random.randint 找到不等概率的随机 0 和 1

algorithm - 在每个索引处生成具有唯一值的多个数字序列