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

求助:合并两个Pandas DataFrame后丢失Ticker与Date列的解决方法

解决Pandas合并DataFrame时丢失Ticker和Date列的问题

我来帮你搞定这个问题!咱们先搞清楚为什么会丢失这两列:你在加载股价数据的时候,设置了index=[TICKER, DATE],这就把Ticker和Date变成了索引列,而不是DataFrame的普通列。pd.merge()默认只会合并普通列,不会自动包含索引列,所以这两列就没出现在合并结果里。

下面给你几个简单可行的解决方案:

方案1:重置股价表的索引再合并

最直接的方法就是把df_prices的索引重置为普通列,这样合并时就能带上Ticker和Date了:

# 把索引列(Ticker和Date)转成普通列
df_prices_reset = df_prices.reset_index()
# 执行合并操作
merged_df = pd.merge(df_companies, df_prices_reset, on='SimFinId')

这样合并后的DataFrame就会完整保留Ticker、Date以及所有其他列。

方案2:加载股价数据时不设置索引

如果你一开始就不需要将Ticker和Date设为索引,可以在加载数据时去掉index参数:

# 加载股价数据时不指定索引,Ticker和Date会作为普通列存在
df_prices = sf.load_shareprices(variant='daily', market='us')
# 直接合并即可
merged_df = pd.merge(df_companies, df_prices, on='SimFinId')

这种方式更简洁,适合不需要把Ticker+Date作为复合索引的场景。

验证合并结果

完成合并后,你可以用下面的代码检查是否包含目标列:

# 查看所有列名
print(merged_df.columns)
# 或者查看前几行数据确认
print(merged_df.head())

正常情况下,你会看到Ticker和Date都出现在列列表里,完全不影响后续和第三个表按日期筛选合并的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:29:09