代码如下:
python
import pandas as pd
import os
from datetime import datetime
# 读取数据
for file in os.listdir():
if file.endswith('xlsx'):
df = pd.read_excel(file, sheet_name='Tracing report',header=0) # 假设输入文件名为 input.xlsx
# 处理合并单元格:填充空白值
df['ATD'] = df['ATD'].ffill()
# 将时间列转换为 datetime 类型
df['ATD'] = pd.to_datetime(df['ATD'],errors='coerce') # E列是 ATD
df['ATA_T'] = pd.to_datetime(df.iloc[:,19],errors='coerce') # T列是 ATA
df['ATA KZH border'] = pd.to_datetime(df['ATA KZH border'],errors='coerce') # M列是 口岸
df = df.dropna(subset=['ATD', 'ATA_T','ATA KZH border'])
# 计算时间差
df['整段时效'] = (df['ATA_T'] - df['ATD']).dt.days -1 # 转换为天
df['欧洲段时效'] = (df['ATA_T'] - df['ATA KZH border']).dt.days -1 # 转换为天
# 按车站、月份和口岸分组
df['Month'] = df['ATD'].dt.to_period('M') # 提取月份
# df['Month'] = df['ATD'].dt.month
grouped = df.groupby(['Part No.', 'Month', 'ATA CN border'], as_index=False) # I列是 车站, K列是 口岸
# 计算每组的平均值
result = grouped.agg({
'整段时效': lambda x: round(x.mean(), 2),
'欧洲段时效': lambda x: round(x.mean(), 2)
})
result = result.rename(columns={
'Part No.': '车站',
'Month': '月份',
'ATA CN border': '口岸'
})
# 将结果保存到 Excel 文件
result.to_excel('output.xlsx', index=False)
本文作者:ivan
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!