# -*- coding:utf-8 -*-
# @author:Ye Zhoubing
# @datetime:2025/12/10 20:11
# @software: PyCharm
# -*- coding:utf-8 -*-
"""
篩選出匹配時間段,就用csv中相同的值代替,其它用0代替
"""
import pandas as pd


def extract_data_by_time(csv_file, xlsx_file, csv_time_column,
                         xlsx_time_column="時間",
                         output_file=None):
    """
    輸出三列:
    1. 事件(CSV 時間)
    2. 原來的值(CSV 值)
    3. 篩選出來的值(如果該時間出現在 XLSX,填原值;否則為空)
    """

    print("正在讀取 CSV 文件...")
    csv_data = pd.read_csv(csv_file)

    print("正在讀取 XLSX 時間段...")
    xlsx_data = pd.read_excel(xlsx_file)

    # 轉換時間格式
    csv_data[csv_time_column] = pd.to_datetime(csv_data[csv_time_column])
    xlsx_data[xlsx_time_column] = pd.to_datetime(xlsx_data[xlsx_time_column])

    # CSV 真實的值列 = 除時間列之外的第一列
    csv_value_column = [col for col in csv_data.columns if col != csv_time_column][0]

    # ====== 核心部分:標記 XLSX 中的時間 ======
    xlsx_times = set(xlsx_data[xlsx_time_column])

    # 創建一個新列:篩選出來的值
    csv_data["篩選出來的值"] = csv_data.apply(
        lambda row: row[csv_value_column] if row[csv_time_column] in xlsx_times else 0,  # 用0代替
        axis=1
    )

    # 重命名為指定輸出格式
    result = csv_data.rename(columns={
        csv_time_column: "事件",
        csv_value_column: "原來的值"
    })[["事件", "原來的值", "篩選出來的值"]]

    print("處理完成,前5行如下:")
    print(result.head())

    if output_file:
        result.to_excel(output_file, index=False)
        print(f"結果已保存到:{output_file}")

    return result


# 示例調用
if __name__ == "__main__":
    extract_data_by_time(
        csv_file="NH3N_future_forecast.csv",
        xlsx_file="預測與實測對比COD.xlsx",
        csv_time_column="date",
        output_file="最終三列結果.xlsx"
    )