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

如何在Pandas DataFrame中用.concat替代.append方法?

解决pandas append弃用警告的方案

原始问题内容

代码

dataframe = pd.DataFrame(columns = my_columns)
for stock in stocks['Ticker'][:1]:
    api_url = f'https://sandbox.iexapis.com/stable/stock/{symbol}/quote/?token={IEX_CLOUD_API_TOKEN}'
    data = requests.get(api_url).json()
    dataframe = dataframe.append(
    pd.Series([stock, data['latestPrice'], marketCap/1000000000000],
    index = my_columns),
    ignore_index = True
    )
dataframe

运行结果

TickerStock PriceMarket Cap
A153.572.37218

警告信息

FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
dataframe = dataframe.append(

疑问

知道要改用列表收集数据,但不知道怎么处理原来的Series。


修改方案

方案1:放弃Series,直接用字典存数据(推荐)

这种方式更简洁,无需依赖Series,直接构造对应列名的字典存入列表,最后一次性转为DataFrame:

# 初始化空列表存储每行数据
data_list = []
my_columns = ['Ticker', 'Stock Price', 'Market Cap']

for stock in stocks['Ticker'][:1]:
    api_url = f'https://sandbox.iexapis.com/stable/stock/{symbol}/quote/?token={IEX_CLOUD_API_TOKEN}'
    data = requests.get(api_url).json()
    # 构造匹配列名的字典
    row_data = {
        'Ticker': stock,
        'Stock Price': data['latestPrice'],
        'Market Cap': marketCap / 1000000000000
    }
    data_list.append(row_data)

# 列表转DataFrame
dataframe = pd.DataFrame(data_list, columns=my_columns)

方案2:保留Series,转为单行DataFrame后存入列表

如果一定要保留Series的用法,可将其转成单行DataFrame后存入列表,最后用pd.concat合并:

data_list = []
my_columns = ['Ticker', 'Stock Price', 'Market Cap']

for stock in stocks['Ticker'][:1]:
    api_url = f'https://sandbox.iexapis.com/stable/stock/{symbol}/quote/?token={IEX_CLOUD_API_TOKEN}'
    data = requests.get(api_url).json()
    # 将Series转为单行DataFrame(.to_frame().T实现转置)
    row_df = pd.Series(
        [stock, data['latestPrice'], marketCap/1000000000000],
        index=my_columns
    ).to_frame().T
    data_list.append(row_df)

# 合并所有行DataFrame
dataframe = pd.concat(data_list, ignore_index=True)

核心原因

append方法每次调用都会生成新的DataFrame对象,数据量大时效率极低。改用列表收集数据再一次性转换/合并,既能消除警告,还能大幅提升运行效率,这也是pandas官方推荐的替代方案。


内容的提问来源于stack exchange,提问作者Carlo M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:28