如何合并Pandas股票子DataFrame并按日期排序及添加Symbol列
解决方案
步骤分解
- 导入
pandas库 - 初始化空列表存储每个股票的DataFrame
- 遍历股票代码列表,读取对应CSV文件,添加
Symbol列后存入列表 - 合并所有子DataFrame为一个最终DataFrame
- 按
Date列排序(需确保Date列是日期类型,避免字符串排序错误)
完整代码示例
import pandas as pd # 目标股票代码列表 tickers = ['AAPL', 'TSLA', 'GOOG'] # 存储单股票DataFrame的容器 stock_dfs = [] for ticker in tickers: # 读取对应CSV文件(假设文件名为"股票代码.csv",如AAPL.csv) single_stock_df = pd.read_csv(f'{ticker}.csv') # 为当前DataFrame添加Symbol列,值为对应股票代码 single_stock_df['Symbol'] = ticker # 将处理后的DataFrame加入容器 stock_dfs.append(single_stock_df) # 合并所有单股票DataFrame final_df = pd.concat(stock_dfs, ignore_index=True) # 转换Date列为日期类型(关键步骤,保证排序逻辑正确) final_df['Date'] = pd.to_datetime(final_df['Date']) # 按Date列升序排序(旧日期在前) final_df.sort_values(by='Date', inplace=True) # 重置排序后的索引(可选,消除排序导致的索引混乱) final_df.reset_index(drop=True, inplace=True)
补充说明
- 文件路径调整:如果CSV文件不在当前工作目录,需修改
pd.read_csv的路径,比如pd.read_csv(f'./stock_data/{ticker}.csv') - 自定义日期格式:若CSV中日期格式非标准(如
dd/mm/yyyy),可在pd.to_datetime中指定格式:pd.to_datetime(final_df['Date'], format='%d/%m/%Y') - 降序排序:若需要新日期在前,添加
ascending=False参数:final_df.sort_values(by='Date', ascending=False, inplace=True)
内容的提问来源于stack exchange,提问作者andypappy
相关产品推荐
相关产品推荐

