如何编写循环切换DataFrame名称 为每个DataFrame生成对应请求URL
首先改造原create_url函数,将DataFrame作为入参传入,同时修复原代码中变量名不一致的笔误(原代码中定义变量df_id后错误调用了不存在的df_id1):
def create_url(df): # 拼接id参数,移除多余空格和列表括号 df_id = str(df['id'].tolist())[1:-1].replace(" ", "") ids_param = f"ids={df_id}" url = f"https://api.twitter.com/2/tweets?{ids_param}&{tweet_fields}" return url
接下来根据你dfs列表的存储内容选择对应的循环方案即可:
方案1(推荐):用字典存储生成的URL
后续可直接通过urls['url1']、urls['url2']的形式调用对应URL,批量处理时遍历字典即可,管理成本更低。
- 如果
dfs是DataFrame对象列表:
urls = {} # start=1表示序号从1开始计数,对应url1、url2的命名规则 for idx, df in enumerate(dfs, start=1): urls[f'url{idx}'] = create_url(df)
- 如果
dfs是DataFrame名称的字符串列表(比如['df1', 'df2', 'df3']):
urls = {} for idx, df_name in enumerate(dfs, start=1): # 从全局变量中取对应名称的DataFrame对象 df = globals()[df_name] urls[f'url{idx}'] = create_url(df)
方案2(不推荐):生成独立的url1、url2全局变量
如果必须要生成独立的全局变量,可以用以下代码实现,缺点是变量零散,后续批量处理难度高:
for idx, df in enumerate(dfs, start=1): globals()[f'url{idx}'] = create_url(df)
内容的提问来源于stack exchange,提问作者Data_Science_110
相关产品推荐
相关产品推荐

