在组中的每一行上随机

我有一个以下数据帧:


我试图将 disbursedamount 系列中的值填充为 SanctionedAmount 的 10% 到 20% 之间的任何随机值。这个逻辑需要应用在每组 accountid 上。


Index  accountid  transdate  SanctionedAmount  balance  disbursedamount


0        103602 2018-08-01              7806     6798                0

1        103602 2018-11-01              7806     6798                0

2        103606 2018-11-01              6274     7313                0

3        103606 2018-06-01              6274     7313                0

4        103606 2018-07-01              6274     7313                0

5        103606 2018-08-01              6274     7313                0

6        103609 2018-11-01              5726     8189                0

7        103609 2018-07-01              5726     8189                0

8        103609 2018-08-01              5726     8189                0

9        103609 2018-06-01              5726     8189                0

10       103617 2018-07-01              6549     7457                0

11       103634 2018-06-01              8835     7794                0

12       103637 2018-07-01              6920     6623                0

13       103644 2018-06-01              8481     8253                0

14       103645 2018-11-01              8220     9966                0

15       103645 2018-06-01              8220     9966                0

16       103645 2018-07-01              8220     9966                0

17       103645 2018-08-01              8220     9966                0

预期输出:


Index accountid transdate  SanctionedAmount  balance disbursedamount


0   103602     2018-08-01     1000            798      100

1   103602     2018-11-01     1000            798      200

2   103606     2018-11-01     2000            313      200

3   103606     2018-06-01     2000            313      400

4   103606     2018-07-01     2000            313      200

5   103606     2018-08-01     2000            313      300

6   103609     2018-11-01     5000            189      500

7   103609     2018-07-01     5000            189      100

DIEA
浏览 212回答 3
3回答

catspeake

你想在这里使用随机函数是一个简单的选择   from random import random   df.disbursedamount = df.SanctionedAmount * (random()/5)

红糖糍粑

从您的预期输出来看,您似乎不需要“应用于每组 accountid”的逻辑,即不需要groupby. 所以每一行的解决方案是import pandas as pdimport numpy as np# df = the_DataFrame_you_havedf['disbursedamount'] = df['SanctionedAmount'] * np.random.uniform(0.1, 0.2)

翻翻过去那场雪

您可以简单地乘以SanctionedAmount从 0.1 和 0.2 之间的均匀分布中随机选择的数字。df['disbursedamount'] = df['SanctionedAmount'] * np.random.uniform(0.10, 0.20)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python