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

如何对比两个DataFrame找出CLASS字段更新的SECURITY记录?

解决DataFrame中CLASS字段变化的SECURITY识别与结果生成问题

以下是针对需求的Python实现方案,代码简洁易懂,适配你提供的场景:

完整代码实现

import pandas as pd

# ----------------------
# 1. 替换为你的实际DataFrame
# ----------------------
# 前一日数据
df_prev = pd.DataFrame({
    'SECURITY': ['Sec 1', 'Sec 2', 'Sec 3', 'Sec 4'],
    'CLASS': ['Stock', 'Stock', 'Bond', 'Stock']
})

# 当日数据
df_curr = pd.DataFrame({
    'SECURITY': ['Sec 1', 'Sec 2', 'Sec 3', 'Sec 4'],
    'CLASS': ['Stock', 'Preferred', 'Futures Option', 'Stock']
})

# ----------------------
# 2. 合并数据并匹配SECURITY
# ----------------------
# 按SECURITY合并,用后缀区分前后CLASS
merged_data = pd.merge(df_prev, df_curr, on='SECURITY', suffixes=('_prev', '_curr'))

# ----------------------
# 3. 筛选CLASS变化的记录
# ----------------------
changed_rows = merged_data[merged_data['CLASS_prev'] != merged_data['CLASS_curr']]

# ----------------------
# 4. 生成指定格式的描述文本
# ----------------------
change_descriptions = [
    f"{row['SECURITY']}已从{row['CLASS_prev']}修改为{row['CLASS_curr']}"
    for _, row in changed_rows.iterrows()
]

# ----------------------
# 5. 输出与保存结果
# ----------------------
# 打印控制台结果
print("CLASS字段发生变化的SECURITY:")
for desc in change_descriptions:
    print(f"- {desc}")

# 保存为文本文件
with open('class_change_log.txt', 'w', encoding='utf-8') as file:
    file.write("CLASS字段发生变化的SECURITY:\n")
    for desc in change_descriptions:
        file.write(f"- {desc}\n")

# 可选:保存为CSV(保留结构化数据)
changed_rows['CHANGE_DESCRIPTION'] = change_descriptions
changed_rows[['SECURITY', 'CLASS_prev', 'CLASS_curr', 'CHANGE_DESCRIPTION']].to_csv(
    'class_change_log.csv', 
    index=False, 
    encoding='utf-8'
)

示例输出

运行代码后,控制台会输出:

CLASS字段发生变化的SECURITY:
- Sec 2已从Stock修改为Preferred
- Sec 3已从Bond修改为Futures Option

同时会生成两个文件:

  • class_change_log.txt:纯文本格式的变化记录
  • class_change_log.csv:结构化的变化数据(包含SECURITY、旧CLASS、新CLASS和描述)

注意事项

  • 确保两个DataFrame的SECURITY列没有重复值,否则合并时会出现重复行
  • 如果你的数据中存在仅在某一个DataFrame中出现的SECURITY(新增/删除),可以将pd.merge的how参数改为'outer',并额外处理这些情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:13:14