失败任务定时删除
This commit is contained in:
@ -85,7 +85,7 @@ try:
|
||||
from .qiya import get_pressure_at_location
|
||||
|
||||
except ImportError as e:
|
||||
print(f"❌ 导入qiya模块失败: {e}")
|
||||
print(f"导入qiya模块失败: {e}")
|
||||
print("请确保GasFlux包结构完整")
|
||||
sys.exit(1)
|
||||
|
||||
@ -101,17 +101,18 @@ def load_excel_data(file_path):
|
||||
pd.DataFrame: 读取的数据
|
||||
"""
|
||||
try:
|
||||
print(f"正在读取文件: {file_path}")
|
||||
print(f"正在读取Excel文件: {Path(file_path).name}")
|
||||
|
||||
# 读取Excel文件
|
||||
df = pd.read_excel(file_path)
|
||||
print(f"SUCCESS: Successfully loaded data: {len(df)} rows, {len(df.columns)} columns")
|
||||
print(f"列名:{list(df.columns)}")
|
||||
print(f" 数据读取成功: {len(df):,} 行 × {len(df.columns)} 列")
|
||||
print(f" 检测到的列: {', '.join(df.columns[:5])}{'...' if len(df.columns) > 5 else ''}")
|
||||
|
||||
return df
|
||||
|
||||
except Exception as e:
|
||||
print(f"ERROR: Failed to read file: {e}")
|
||||
print(f" 文件读取失败: {Path(file_path).name}")
|
||||
print(f" 错误详情: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
@ -126,7 +127,7 @@ def remove_columns(df, columns_to_remove):
|
||||
Returns:
|
||||
pd.DataFrame: 删除列后的DataFrame
|
||||
"""
|
||||
print(f"\n删除列: {columns_to_remove}")
|
||||
print(f"\n 删除不需要的列: {columns_to_remove}")
|
||||
|
||||
# 检查要删除的列是否存在
|
||||
existing_columns = [col for col in columns_to_remove if col in df.columns]
|
||||
@ -174,7 +175,7 @@ def fix_time_column(df, filename):
|
||||
Returns:
|
||||
pd.DataFrame: 修正后的DataFrame
|
||||
"""
|
||||
print("修正时间格式...")
|
||||
print(" 根据文件名修正时间格式...")
|
||||
|
||||
# 提取小时信息
|
||||
hour_prefix = extract_hour_from_filename(filename)
|
||||
@ -230,23 +231,23 @@ def convert_coordinates(df):
|
||||
Returns:
|
||||
pd.DataFrame: 转换后的DataFrame
|
||||
"""
|
||||
print("转换经纬度坐标...")
|
||||
print(" 转换经纬度坐标(GPS原始数据除以10^7)...")
|
||||
|
||||
if 'stGPSPositionX' in df.columns:
|
||||
original_lon = df['stGPSPositionX'].head(3).tolist()
|
||||
df['stGPSPositionX'] = df['stGPSPositionX'] / 1e7
|
||||
converted_lon = df['stGPSPositionX'].head(3).tolist()
|
||||
print("经度转换示例:")
|
||||
for orig, conv in zip(original_lon, converted_lon):
|
||||
print(".6f")
|
||||
print(" 经度转换示例:")
|
||||
for i, (orig, conv) in enumerate(zip(original_lon, converted_lon)):
|
||||
print(f" 第{i+1}行: {orig:.6f} → {conv:.6f}")
|
||||
|
||||
if 'stGPSPositionY' in df.columns:
|
||||
original_lat = df['stGPSPositionY'].head(3).tolist()
|
||||
df['stGPSPositionY'] = df['stGPSPositionY'] / 1e7
|
||||
converted_lat = df['stGPSPositionY'].head(3).tolist()
|
||||
print("纬度转换示例:")
|
||||
for orig, conv in zip(original_lat, converted_lat):
|
||||
print(".6f")
|
||||
print(" 纬度转换示例:")
|
||||
for i, (orig, conv) in enumerate(zip(original_lat, converted_lat)):
|
||||
print(f" 第{i+1}行: {orig:.6f} → {conv:.6f}")
|
||||
|
||||
return df
|
||||
|
||||
@ -264,7 +265,7 @@ def calculate_pressure(df, max_samples=None, height_tolerance=10.0, height_bin_s
|
||||
Returns:
|
||||
pd.DataFrame: 添加气压列的DataFrame
|
||||
"""
|
||||
print("计算气压数据...")
|
||||
print(" 计算气压数据(使用qiya.py大气模型)...")
|
||||
|
||||
# 检查必要列是否存在(支持原始列名和新列名)
|
||||
# 原始数据中的列名
|
||||
@ -554,11 +555,11 @@ def adjust_altitude(df):
|
||||
Returns:
|
||||
pd.DataFrame: 添加调整后高度字段的DataFrame
|
||||
"""
|
||||
print("创建调整后的高度字段...")
|
||||
print("📏 创建调整后的高度字段...")
|
||||
|
||||
if 'fAltitudeFused' in df.columns:
|
||||
min_altitude = df['fAltitudeFused'].min()
|
||||
print(".2f")
|
||||
print(f" 最小高度值: {min_altitude:.2f} 米")
|
||||
|
||||
# 创建新的调整后高度字段,而不是修改原始字段
|
||||
df['height_ato'] = df['fAltitudeFused'] - min_altitude
|
||||
@ -566,9 +567,11 @@ def adjust_altitude(df):
|
||||
original_alt = df['fAltitudeFused'].head(3).tolist()
|
||||
adjusted_alt = df['height_ato'].head(3).tolist()
|
||||
|
||||
print("高度调整示例:")
|
||||
for orig, adj in zip(original_alt, adjusted_alt):
|
||||
print(".2f")
|
||||
print(" 高度调整示例:")
|
||||
for i, (orig, adj) in enumerate(zip(original_alt, adjusted_alt)):
|
||||
print(f" 第{i+1}行: {orig:.2f}m → {adj:.2f}m")
|
||||
else:
|
||||
print(" 未找到 'fAltitudeFused' 列,跳过高度调整")
|
||||
|
||||
return df
|
||||
|
||||
@ -583,7 +586,7 @@ def merge_timestamp(df):
|
||||
Returns:
|
||||
pd.DataFrame: 融合后的DataFrame
|
||||
"""
|
||||
print("融合日期和时间(修正时间格式)...")
|
||||
print(" 融合日期和时间为时间戳...")
|
||||
|
||||
if 'qStrDate' in df.columns and 'qStrTime' in df.columns:
|
||||
timestamps = []
|
||||
@ -639,7 +642,7 @@ def rename_columns(df):
|
||||
Returns:
|
||||
pd.DataFrame: 重命名后的DataFrame
|
||||
"""
|
||||
print("重命名字段...")
|
||||
print(" 重命名字段为GasFlux标准格式...")
|
||||
|
||||
# 定义字段映射
|
||||
column_mapping = {
|
||||
@ -681,7 +684,7 @@ def ensure_float64_types(df, config=None):
|
||||
Returns:
|
||||
pd.DataFrame: 数据类型转换后的DataFrame
|
||||
"""
|
||||
print("确保数值字段类型为float64...")
|
||||
print(" 确保数值字段类型为float64(GasFlux要求)...")
|
||||
|
||||
# 定义基础需要转换为float64的字段
|
||||
float64_columns = [
|
||||
@ -726,7 +729,7 @@ def process_excel_file(file_path, config_path=None):
|
||||
file_path: Excel文件路径
|
||||
config_path: 配置文件路径,用于读取gases配置
|
||||
"""
|
||||
print(f"=== 开始处理文件: {file_path} ===\n")
|
||||
print(f" === 开始处理文件: {Path(file_path).name} ===\n")
|
||||
|
||||
# 1. 读取数据
|
||||
df = load_excel_data(file_path)
|
||||
@ -767,10 +770,10 @@ def process_excel_file(file_path, config_path=None):
|
||||
output_path = Path(file_path).with_suffix('.processed.csv')
|
||||
df.to_csv(output_path, index=False, encoding='utf-8-sig')
|
||||
|
||||
print(f"\n处理完成!")
|
||||
print(f"输出文件: {output_path}")
|
||||
print(f"最终数据形状: {df.shape[0]} 行 × {df.shape[1]} 列")
|
||||
print(f"最终列名: {list(df.columns)}")
|
||||
print(f"\n 处理完成!")
|
||||
print(f" 输出文件: {output_path}")
|
||||
print(f" 最终数据: {df.shape[0]:,} 行 × {df.shape[1]} 列")
|
||||
print(f" 最终字段: {', '.join(df.columns)}")
|
||||
|
||||
return df
|
||||
|
||||
|
||||
Reference in New Issue
Block a user