如何用Python的Pandas合并Excel列并转换为指定时间格式
使用Pandas处理无表头Excel并合并转换时间格式
以下是实现需求的具体步骤和代码:
1. 读取无表头Excel数据
用pandas.read_excel读取文件,通过header=None参数明确告知Pandas这是无表头数据。假设你的Excel前4列依次是日、月、年、带小数的时间值(对应示例里的25、11、2020、12.5),可以临时给列命名方便后续操作:
import pandas as pd # 替换成你的Excel文件路径 df = pd.read_excel("your_data.xlsx", header=None) # 临时命名列,按需调整顺序 df.columns = ["day", "month", "year", "time_decimal"]
2. 把小数时间转成HH:MM:SS格式
对于time_decimal列的数值(比如12.5),逻辑是:
- 整数部分直接作为小时
- 小数部分乘以60得到分钟(0.5*60=30)
- 秒固定为0
用apply实现格式化:
# 提取小时和分钟 df["hour"] = df["time_decimal"].astype(int) df["minute"] = ((df["time_decimal"] - df["hour"]) * 60).astype(int) # 格式化为两位数字的时分秒 df["time_formatted"] = df.apply(lambda row: f"{row['hour']:02d}:{row['minute']:02d}:00", axis=1)
3. 合并日期和时间为目标格式
把日、月、年拼接成DD-MM-YYYY,再和格式化后的时间组合成最终的字符串:
# 格式化日期部分 df["date_formatted"] = df.apply(lambda row: f"{row['day']:02d}-{row['month']:02d}-{row['year']}", axis=1) # 合并日期和时间 df["full_datetime"] = df["date_formatted"] + ":" + df["time_formatted"]
完整可运行代码
import pandas as pd # 读取无表头数据 df = pd.read_excel("your_data.xlsx", header=None) df.columns = ["day", "month", "year", "time_decimal"] # 处理小数时间 df["hour"] = df["time_decimal"].astype(int) df["minute"] = ((df["time_decimal"] - df["hour"]) * 60).astype(int) df["time_formatted"] = df.apply(lambda row: f"{row['hour']:02d}:{row['minute']:02d}:00", axis=1) # 合并日期时间 df["date_formatted"] = df.apply(lambda row: f"{row['day']:02d}-{row['month']:02d}-{row['year']}", axis=1) df["full_datetime"] = df["date_formatted"] + ":" + df["time_formatted"] # 输出结果或保存 print(df["full_datetime"]) # df.to_excel("processed_data.xlsx", index=False) # 保存到新文件
关键细节说明
- 如果你的列顺序不是日、月、年,一定要调整
df.columns的对应关系,否则会出错。 :02d格式确保日、月、小时、分钟都是两位数字(比如5变成05,避免出现"5-11-2020:9:30:00"这种不统一的格式)。- 即使时间是更精确的小数(比如12.25=12:15:00),代码依然能正确转换,因为0.25*60=15。
内容的提问来源于stack exchange,提问作者Adithiy R Nair
相关产品推荐
相关产品推荐

