Pandas拆分DataFrame后批量生成Twitter API请求URL方法问询
问题根因
遍历Python字典时默认迭代的是字典的键,你代码里的dfs字典的键是'df1'、'df2'这类字符串,所以你打印j的类型才会是字符串,不是对应的DataFrame值。要获取子DataFrame需要取字典键对应的value,或者直接遍历字典的items()/values()。
完整实现代码
import pandas as pd # 原有拆分逻辑保持不变 df = pd.DataFrame.from_dict(pd.json_normalize(tweets_data), orient='columns') n = 100 # 每块行数 list_df = [df[i:i+n] for i in range(0, df.shape[0], n)] dfs = {} # 重命名临时变量为sub_df,避免覆盖外层原始df变量 for idx, sub_df in enumerate(list_df, 1): dfs[f'df{idx}'] = sub_df # 改造create_url为通用函数,接收子DataFrame和tweet_fields作为入参 def create_url(sub_df, tweet_fields): # 优化id拼接逻辑,比字符串切片处理更稳妥,不会出现格式异常 ids_str = ','.join(map(str, sub_df['id'].tolist())) url = f"https://api.twitter.com/2/tweets?ids={ids_str}&{tweet_fields}" return url # 批量生成所有子df对应的URL,结果存储到url_map字典 url_map = {} # 遍历items同时获取子df名称和子df对象 for df_name, sub_df in dfs.items(): # 传入你提前定义好的tweet_fields参数即可 current_url = create_url(sub_df, tweet_fields) url_map[df_name] = current_url # 按需打印验证结果 print(f"{df_name}对应请求URL:{current_url}")
关键修改说明
- 遍历字典时用
dfs.items()同时获取字典的键(子df名称)和值(子df对象),解决仅拿到字符串键的问题 - 把原来写死
df1的create_url改成通用函数,接收任意子df作为入参,适配批量调用场景 - 优化id拼接逻辑,使用
join方法直接生成逗号分隔的字符串,避免字符串切片、替换可能带来的格式异常 - 重命名子df临时变量为
sub_df,避免覆盖外层的原始df变量
内容的提问来源于stack exchange,提问作者Data_Science_110
相关产品推荐
相关产品推荐

