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

Python实现每周CSV文件新增及状态变更条目检测

任务CSV数据对比与差异提取解决方案

实现步骤

假设:

  • 历史数据DataFrame:df_history(对应Weekly_Data_yyyy_mm_dd)
  • 新数据DataFrame:df_new(对应New_Weekly_Data)
  • 任务唯一标识为DataFrame索引
  • 状态列名为is_closed(可替换为实际列名)

1. 提取状态从FALSE变为TRUE的任务

先对齐两个数据框的共同任务,再筛选状态变更的条目:

# 获取两个数据集中都存在的任务索引
common_tasks = df_history.index.intersection(df_new.index)

# 筛选历史未关闭、新数据已关闭的任务
status_updates = df_new.loc[
    common_tasks &
    (df_history['is_closed'] == False) &
    (df_new['is_closed'] == True)
]

注意:如果状态列是字符串类型(比如"TRUE"/"FALSE"),把判断条件改为df_history['is_closed'] == "FALSE"即可。

2. 合并新增任务与状态变更任务

结合你已实现的新增任务提取逻辑,合并两类差异:

# 你已实现的新增任务提取
new_tasks = df_new[~df_new.index.isin(df_history.index)]

# 合并所有差异条目(去重避免意外重复)
all_differences = pd.concat([new_tasks, status_updates]).drop_duplicates()

3. 输出结果

可以保存为CSV或直接打印:

# 保存差异到CSV文件
all_differences.to_csv('Task_Differences.csv', index=True)

# 或控制台打印分块结果
print("=== 新增任务 ===")
print(new_tasks)
print("\n=== 状态从未完成变为已完成的任务 ===")
print(status_updates)

关键注意事项

  • 确保任务唯一标识是DataFrame的索引,如果实际用的是某列(如task_id),先设置索引:
    df_history = df_history.set_index('task_id')
    df_new = df_new.set_index('task_id')
    
  • 用index.intersection对齐共同任务,从根源避免因数据框形状不一致导致的全量对比问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:16:14