我有一個以下數據幀:我試圖將 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
提交
取消