日期复制到2-n列前

日期复制到2-n列前,处理每个商品数据时,直接跳过前面空白的行,然后从有数据的行开始,将数据复制到新的 Excel 文件中从第二行开始的位置

import pandas as pd
import os

# 获取桌面路径
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")

# 源文件路径
source_file_path = os.path.join(desktop_path, "源数据.xlsx")

# 读取 Excel 文件
df = pd.read_excel(source_file_path)

# 提取日期列
date_column = df.iloc[:, 0]

# 初始化一个空的列表,用于存储处理后的 DataFrame
processed_dfs = []

# 遍历第 2 列到第 n 列
for col in df.columns[1:]:
    # 获取当前商品的销售额列
    sales_column = df[col]

    # 创建一个新的 DataFrame,包含日期列和当前商品的销售额列
    new_df = pd.DataFrame({
        '日期': date_column,
        col: sales_column
    })

    # 找到第一个有销售额数据的行的索引
    first_valid_index = new_df[col].first_valid_index()
    if first_valid_index is not None:
        # 从第一个有数据的行开始截取数据
        new_df = new_df.loc[first_valid_index:]

    # 重置索引
    new_df = new_df.reset_index(drop=True)

    # 将处理后的 DataFrame 添加到列表中
    processed_dfs.append(new_df)

# 处理后文件的保存路径
output_file_path = os.path.join(desktop_path, "处理后.xlsx")

# 创建一个 ExcelWriter 对象
with pd.ExcelWriter(output_file_path, engine='openpyxl') as writer:
    # 创建工作表
    sheet = writer.book.create_sheet('Sheet1')
    # 将工作表添加到 writer.sheets 字典中
    writer.sheets['Sheet1'] = sheet

    # 写入表头
    headers = []
    for df in processed_dfs:
        headers.extend(df.columns)
    sheet.append(headers)

    # 逐列写入每个 DataFrame 的数据,从第二行开始
    col_offset = 0
    for df in processed_dfs:
        for row_idx, row in df.iterrows():
            sheet.cell(row=row_idx + 2, column=col_offset + 1, value=row['日期'])
            sheet.cell(row=row_idx + 2, column=col_offset + 2, value=row[df.columns[1]])
        col_offset += 2

 

posted @ 2025-02-28 16:15  方木--数据分析与挖掘  阅读(8)  评论(0)    收藏  举报