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

如何为Pandas DataFrame添加财报发布日期标识列?

解决Pandas财报日期标记问题

嘿,我知道你卡在财报日期匹配的问题上了,这大概率是因为日期格式不统一导致的关联失败,我来给你一步步解决!

问题核心

你的主DataFrame日期是YYYY-MM-DD格式,而财报DataFrame的日期是MM/DD/YYYY格式,而且两者可能都是字符串类型,Pandas无法直接匹配。我们需要先统一日期的格式和类型,再进行关联。

完整解决方案

1. 先定义你的数据(方便复现)

import pandas as pd

# 你的主DataFrame(含两年日期数据)
main_df = pd.DataFrame({
    "Date": ["2018-02-15", "2018-04-02", "2018-04-03", "2018-04-04"],
    "Stock": [100, 122, 119, 120]
})

# 你的财报日期DataFrame
earnings_df = pd.DataFrame(
    columns=["Earnings_Date", "Earnings Reported"],
    data=[['05/01/2018','Yes'],['02/15/2018','Yes'],['10/31/2017','Yes'],['08/01/2017','Yes']]
)

2. 统一日期格式为datetime类型

这是关键步骤,确保两个DataFrame的日期列都是datetime类型,格式一致:

# 转换主DataFrame的Date列为datetime
main_df["Date"] = pd.to_datetime(main_df["Date"])

# 转换财报DataFrame的Earnings_Date列为datetime(指定格式避免歧义)
earnings_df["Earnings_Date"] = pd.to_datetime(earnings_df["Earnings_Date"], format="%m/%d/%Y")

3. 关联数据并标记财报日期

这里提供两种简单的方法,任选其一即可:

方法一:使用merge左连接(适合需要保留更多财报信息的场景)
# 左连接主数据和财报数据,匹配日期
result_df = pd.merge(
    main_df,
    earnings_df,
    left_on="Date",
    right_on="Earnings_Date",
    how="left"
)

# 将未匹配到的财报标记设为"No",并删除多余的日期列
result_df["Earnings Reported"] = result_df["Earnings Reported"].fillna("No")
result_df = result_df.drop(columns=["Earnings_Date"])
方法二:使用map映射(代码更简洁,适合仅需标记的场景)
# 先把财报日期转成「日期:标记」的字典
earnings_map = earnings_df.set_index("Earnings_Date")["Earnings Reported"].to_dict()

# 映射到主DataFrame,未匹配的填充为"No"
main_df["Earnings Reported"] = main_df["Date"].map(earnings_map).fillna("No")

4. 最终结果

执行完上面的代码后,你会得到期望的DataFrame:

Date  Stock Earnings Reported
0 2018-02-15    100               Yes
1 2018-04-02    122                No
2 2018-04-03    119                No
3 2018-04-04    120                No

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:43:01