网页设计建立站点实验报告营销型网站建设怎么做
前段时间根据需求配合ai写了个转置excel代码,挺好用的,而且可以选择excel,不局限于excel存在哪个地方,都可以转置,但是转置后的excel记得要先创建放在转置文件的目录下。
原本的数据长这样
转置后则可以变为这样!
全代码如下,可以用jupyter运行。
import pandas as pd
import re
import os
import tkinter as tk
from tkinter import filedialog# 1️⃣ 选择 Excel 文件
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(title="选择要转换的Excel文件", filetypes=[("Excel files", "*.xls;*.xlsx")])if file_path:# 2️⃣ 读取 Excel 文件,不解析日期(防止自动转换)df = pd.read_excel(file_path, dtype=str)# 3️⃣ 假设前3列为 品牌、型号、平台,其余列均为日期id_vars = df.columns[:3]# 4️⃣ 转置数据df_melted = df.melt(id_vars=id_vars, var_name='日期', value_name='价格')# 5️⃣ 删除价格为空的行df_melted.dropna(subset=['价格'], inplace=True)# 6️⃣ 定义价格处理函数:支持“-”和“送”运算def clean_price(price):if pd.isna(price):return None# 去除括号及其内容,如 "19999(锁定)" -> "19999"price = re.sub(r'\(.*?\)', '', str(price))# 如果包含 "送" 则按运算处理,如 "15795送938"if "送" in price:parts = price.split("送")try:final_price = int(parts[0]) - int(parts[1])return final_priceexcept:return pd.to_numeric(parts[0], errors='coerce')# 如果包含 "-" 则按运算处理,如 "36088-1805"elif "-" in price:parts = price.split("-")try:final_price = int(parts[0]) - int(parts[1])return final_priceexcept:return pd.to_numeric(parts[0], errors='coerce')else:# 否则保留数字部分price = re.sub(r"[^\d]", "", price)return pd.to_numeric(price, errors='coerce')# 7️⃣ 应用价格处理函数df_melted['价格'] = df_melted['价格'].apply(clean_price)# 8️⃣ 强制日期列保持文本格式,去除 " 00:00:00" 并将 "-" 替换为 "/"df_melted['日期'] = df_melted['日期'].astype(str)df_melted['日期'] = df_melted['日期'].str.replace(" 00:00:00", "", regex=False)df_melted['日期'] = df_melted['日期'].str.replace("-", "/")# 9️⃣ 自动生成保存路径(与原文件同目录),文件名为 "转置后数据.xlsx"save_path = os.path.join(os.path.dirname(file_path), "转置后数据.xlsx")# 🔟 保存 Excel 文件df_melted.to_excel(save_path, index=False)print(f"✅ 数据已成功转置并保存至 {save_path}")
else:print("⚠️ 未选择文件,程序退出。")