Python 随机 Select 行直到满足条件

Python Randomly Select Rows Until Criteria is Met

我有一个包含一些 ID 的数据框,然后是一个像这样的货币列,

Id1     Id2     Id3     Money
1       10      13      10000
2       15      12      12500
3       20      11      60000

我需要一个脚本来随机 select 行,直到我赚到 8000 万美元。我假设有一个 while 循环,例如...

while sum(money) < 80000000:
    df.sample()

也许稍微改一下您的问题,您似乎正在寻找一个随机的行样本,使得 Money 的总和 < 80000000。一种方法是使用 .sample() 进行洗牌,结合 .cumsum():

>>> reordered = df.sample(n=df.shape[0])
>>> lim = reordered[reordered.Money.cumsum() < 80000000]

这将在没有替换的情况下进行采样。

与一行一行地获取行相比,这可能不是最节省内存的方法,但应该可以解决大小合理的问题。