You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决DataFrame循环赋值覆盖问题:生成全量数据的DataFrame

解决循环中DataFrame被覆盖的问题

你的代码问题出在每次循环都重新创建df1,导致之前迭代生成的数据被覆盖,最终只保留最后一条记录。下面是两种可行的修改方案:

方案一:先收集所有数据再生成DataFrame(推荐,效率更高)

先创建一个空列表,把循环中获取的所有数据存入列表,最后一次性生成完整的DataFrame:

import requests
import pandas as pd

# 调用接口获取数据
r = requests.get('https://api.gateio.la/api2/1/feelist')
lista = r.json()

# 创建空列表存储所有数据
data_list = []
for key, ad in lista.items():
    sy = ad['symbol']
    no = ad['no']
    # 将序号和交易对存入列表
    data_list.append({'序号': no, '交易对': sy})

# 生成完整的DataFrame,并设置序号为索引
df = pd.DataFrame(data_list).set_index('序号')
# 导出到Excel
df.to_excel('交易对列表.xlsx')

print(df)

方案二:循环中逐步追加数据

如果数据量不大,也可以在循环中通过pd.concat逐步拼接DataFrame:

import requests
import pandas as pd

r = requests.get('https://api.gateio.la/api2/1/feelist')
lista = r.json()

# 初始化空的DataFrame
df = pd.DataFrame()
for key, ad in lista.items():
    sy = ad['symbol']
    no = ad['no']
    # 生成临时DataFrame并拼接到主DataFrame
    temp_df = pd.DataFrame([sy], index=[no], columns=['交易对'])
    df = pd.concat([df, temp_df])

# 导出到Excel
df.to_excel('交易对列表.xlsx')

print(df)

说明

  • 方案一通过列表收集数据再生成DataFrame,避免了循环中频繁拼接DataFrame的性能损耗,适合数据量较大的场景。
  • 两种方案最终都能生成包含所有数据的DataFrame,并且支持直接导出到Excel文件。

内容的提问来源于stack exchange,提问作者smet for

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 10:10:21