我有一个以下数据帧:我试图将 disbursedamount 系列中的值填充为 SanctionedAmount 的 10% 到 20% 之间的任何随机值。这个逻辑需要应用在每组 accountid 上。Index accountid transdate SanctionedAmount balance disbursedamount0 103602 2018-08-01 7806 6798 01 103602 2018-11-01 7806 6798 02 103606 2018-11-01 6274 7313 03 103606 2018-06-01 6274 7313 04 103606 2018-07-01 6274 7313 05 103606 2018-08-01 6274 7313 06 103609 2018-11-01 5726 8189 07 103609 2018-07-01 5726 8189 08 103609 2018-08-01 5726 8189 09 103609 2018-06-01 5726 8189 010 103617 2018-07-01 6549 7457 011 103634 2018-06-01 8835 7794 012 103637 2018-07-01 6920 6623 013 103644 2018-06-01 8481 8253 014 103645 2018-11-01 8220 9966 015 103645 2018-06-01 8220 9966 016 103645 2018-07-01 8220 9966 017 103645 2018-08-01 8220 9966 0预期输出:Index accountid transdate SanctionedAmount balance disbursedamount0 103602 2018-08-01 1000 798 1001 103602 2018-11-01 1000 798 2002 103606 2018-11-01 2000 313 2003 103606 2018-06-01 2000 313 4004 103606 2018-07-01 2000 313 2005 103606 2018-08-01 2000 313 3006 103609 2018-11-01 5000 189 5007 103609 2018-07-01 5000 189 100
3 回答

catspeake
TA贡献1111条经验 获得超0个赞
你想在这里使用随机函数是一个简单的选择
from random import random
df.disbursedamount = df.SanctionedAmount * (random()/5)

红糖糍粑
TA贡献1815条经验 获得超6个赞
从您的预期输出来看,您似乎不需要“应用于每组 accountid”的逻辑,即不需要groupby. 所以每一行的解决方案是
import pandas as pd
import numpy as np
# df = the_DataFrame_you_have
df['disbursedamount'] = df['SanctionedAmount'] * np.random.uniform(0.1, 0.2)

翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
您可以简单地乘以SanctionedAmount
从 0.1 和 0.2 之间的均匀分布中随机选择的数字。
df['disbursedamount'] = df['SanctionedAmount'] * np.random.uniform(0.10, 0.20)
添加回答
举报
0/150
提交
取消