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

如何修改DataFrame列名?YFinance爬取股票数据列名优化问题

解决方法

方案一:修改爬取函数,直接设置Series名称

在Scrapping函数里,返回收盘价Series时把它的名称改成对应股票代码,后续合并时就会自动用股票代码当列名:

def Scrapping(symbol):
    aapl = yf.Ticker(symbol)
    ainfo = aapl.history(period='1y')
    global castex_date
    castex_date = ainfo.index
    # 给收盘价Series设置股票代码作为名称
    close_series = ainfo.Close
    close_series.name = symbol
    return close_series

all = {'AAPL', 'TSLA', 'MSFT'}
all_Assets = list(map(Scrapping, all))  
# 合并成DataFrame,列名直接就是股票代码
df = pd.DataFrame(all_Assets).T

嫌麻烦的话可以用rename一步到位:

def Scrapping(symbol):
    aapl = yf.Ticker(symbol)
    ainfo = aapl.history(period='1y')
    global castex_date
    castex_date = ainfo.index
    return ainfo.Close.rename(symbol)

方案二:合并时指定列名

不想改爬取函数的话,合并成DataFrame的时候直接用股票代码指定列名就行:

import pandas as pd

all = {'AAPL', 'TSLA', 'MSFT'}
all_Assets = list(map(Scrapping, all))  
# 把集合转成列表,和爬取结果一一对应(集合无序,要固定顺序就把all改成列表)
stock_codes = list(all)
# 方法1:通过索引设置后转置
df = pd.DataFrame(all_Assets, index=stock_codes).T
# 方法2:用字典构造DataFrame,自动匹配列名
df = pd.DataFrame(dict(zip(stock_codes, all_Assets)))

提醒:集合是无序的,如果需要列的顺序和你预想的一致,建议把all定义成列表,比如all = ['AAPL', 'TSLA', 'MSFT']。

内容的提问来源于stack exchange,提问作者Marc Kch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:50:44