Python - 从 500 个列表中选择 250 个随机元素并将其保存到一个新列表中,每次运行代码时都不会更改它

问题描述

所以我有一个包含 500 家公司的 S&P500 股票代码列表。我想生成一个新列表,其中包含从该列表中随机选择的 250 家公司,然后我想将其保存到一个新列表中。我想避免的是,每次运行代码时,我不希望程序给我一组新的 250 家公司。

import pandas as pd
import yfinance as yf
import random

sp_wiki_url = "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies"
sp_wiki_df_list = pd.read_html(sp_wiki_url)
sp500_df = sp_wiki_df_list[0]
sp_tickers = list(sp500_df['Symbol'].values)

seq = [i for i in sp_tickers]
subset = random.seed().sample(seq,250)

这里的代码生成一个包含 250 家公司的列表,但每次运行代码时它都会发生变化,有什么办法可以防止这种情况发生?

谢谢!

解决方法

您应该强制生成器的状态,使用 SELECT DISTINCT ON()就在要求您的样本之前。

with users_with_status (user_id,status,timestamp)
as (
        select su.user_id,u.instance_type,u.timestamp
        from specialusers su
        join users u on su.user_id = u.user_id
)
select l.instance_id,l.instance_type
from users_with_status l
left outer join users_with_status r
     on l.user_id = r.user_id and l.timestamp < r.timestamp
where r.timestamp is null;