12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from datetime import datetime, timedelta
- from utils.file.trans_methods import *
- def convert_and_calculate_time_range(time_str):
- # 解析原始字符串
- date_part = time_str[:6]
- time_part = time_str[7:]
- # 将短日期格式转换为完整年份
- year = '20' + date_part[:2]
- month = date_part[2:4]
- day = date_part[4:]
- hour = time_part[:2]
- minute = time_part[2:]
- # 创建 datetime 对象
- base_time = datetime.datetime.strptime(f"{year}-{month}-{day} {hour}:{minute}", "%Y-%m-%d %H:%M")
- # 计算时间区间
- start_time = base_time.replace(second=0, microsecond=0) - timedelta(minutes=2)
- end_time = base_time.replace(second=0, microsecond=0) + timedelta(minutes=3)
- return base_time.strftime("%Y-%m-%d %H:%M"), start_time.strftime("%Y-%m-%d %H:%M:%S"), end_time.strftime(
- "%Y-%m-%d %H:%M:%S")
- all_df = read_file_to_df(r"D:\data\淄博\故障记录_filtered.csv")
- all_df['激活时间'] = pd.to_datetime(all_df['激活时间'])
- all_files = read_excel_files(r"D:\data\淄博\淄博风场buffer文件(1)")
- dfs = pd.DataFrame()
- for file in all_files:
- base_name = os.path.basename(file)
- if base_name.startswith("b"):
- try:
- turbnine_no = int(base_name.split("_")[0].replace("b", ""))
- base_time, start_time, end_time = convert_and_calculate_time_range(
- base_name.replace(base_name.split("_")[0] + "_", "")[0:11])
- except Exception as e:
- print("error:", file)
- raise e
- condation1 = (all_df['激活时间'] >= start_time) & (all_df['风机名'] == turbnine_no)
- condation2 = (all_df['激活时间'] < end_time) & (all_df['风机名'] == turbnine_no)
- condation = condation1 & condation2
- dfs = pd.concat([dfs, all_df[condation]])
- dfs.drop_duplicates(inplace=True)
- dfs.to_csv(r"D:\data\淄博\result.csv", encoding='utf8', index=False)
|