Python字典嵌套循环提取DataFrame数据时遇可迭代对象问题求助
问题解决方案
核心错误点
- 循环语法错误:Python遍历字典
items()必须用in,原代码里的from是语法错误。 - 字典键值误用:你的字典
MappingDataWebservice键是DataFrame的名称字符串(比如'Season'),不是实际的DataFrame对象。字符串没有index属性,所以第二个循环自然会报错。
修正后的代码方案
方案一:通过全局变量映射获取DataFrame
如果你的Season、Division是全局变量,可以用globals()把字符串名称转换成实际的DataFrame对象:
MappingDataWebservice = {'Season': '/api/DATA/SEASON', 'Division': '/api/DATA/DIVISION', 'Group': '/api/DATA/GROUP'} # 遍历字典的DataFrame名称和对应URL for df_name, url_ws in MappingDataWebservice.items(): # 从全局变量中取出实际的DataFrame df = globals()[df_name] # 遍历DataFrame的索引 for idx in df.index: print(df.iloc[idx][0]) # 这里可以添加发送JSON到接口的逻辑,比如: # row_json = df.iloc[idx].to_json() # requests.post(url_ws, json=row_json)
方案二:直接用DataFrame作为字典的键(更推荐)
如果可以调整字典结构,直接把DataFrame对象作为键,避免字符串映射的麻烦:
# 假设Season、Division、Group是已经定义好的DataFrame MappingDataWebservice = {Season: '/api/DATA/SEASON', Division: '/api/DATA/DIVISION', Group: '/api/DATA/GROUP'} # 遍历字典中的DataFrame和对应URL for df, url_ws in MappingDataWebservice.items(): for idx in df.index: print(df.iloc[idx][0]) # 发送JSON的逻辑示例 # row_json = df.iloc[idx].to_json() # requests.post(url_ws, json=row_json)
更简洁的遍历方式
如果不需要用到索引值,可以直接用iterrows()遍历每一行:
for df_name, url_ws in MappingDataWebservice.items(): df = globals()[df_name] # 直接遍历行,_是占位符代表索引(不用的话可以忽略) for _, row in df.iterrows(): print(row[0]) # row_json = row.to_json() # requests.post(url_ws, json=row_json)
内容的提问来源于stack exchange,提问作者Bahmutopi
相关产品推荐
相关产品推荐

