繁体   English   中英

使用 Python 重塑 Excel 电子表格

[英]Reshaping an Excel Spreadsheet using Python

给定一个 Excel 工作表,其信息以这种方式呈现:(请注意,日期是 header 列)

RESOURCENAME        RESOURCETYPENAME    8/13/2022   8/6/2022    7/30/2022   7/23/2022   7/16/2022   7/9/2022    7/2/2022

LASTNAME:FIRSTNAME1 3P          41      43      45      41      42      40      44

LASTNAME:FIRSTNAME2 FTE         50      42      41      46      48      41      42  

LASTNAME:FIRSTNAME3 FTE         40      42      41      41      41      40      40  

LASTNAME:FIRSTNAME4 FTE         40      43      44      41      42      41      42  

如何使用 Python 将其转换为这种格式?

RESOURCENAME        RESOURCETYPENAME    DATE        HOURS
LASTNAME:FIRSTNAME1 3P          8/13/2022   41
LASTNAME:FIRSTNAME1 3P          8/6/2022    43
LASTNAME:FIRSTNAME1 3P          7/30/2022   45
LASTNAME:FIRSTNAME1 3P          7/23/2022   41
LASTNAME:FIRSTNAME1 3P          7/16/2022   42
LASTNAME:FIRSTNAME1 3P          7/9/2022    40
LASTNAME:FIRSTNAME1 3P          7/2/2022    44
LASTNAME:FIRSTNAME2 FTE         8/13/2022   50
LASTNAME:FIRSTNAME2 FTE         8/6/2022    42
LASTNAME:FIRSTNAME2 FTE         7/30/2022   41
LASTNAME:FIRSTNAME2 FTE         7/23/2022   46
LASTNAME:FIRSTNAME2 FTE         7/16/2022   48
LASTNAME:FIRSTNAME2 FTE         7/9/2022    41
LASTNAME:FIRSTNAME2 FTE         7/2/2022    42
etc...

By importing the excel file to pandas you can then melt the dataframe and rename the columns and then write back to a csv file. 这是我将使用的方法:

import pandas as pd
def reshape_CSV(filepath):
    df = pandas.read_excel(filepath)
    df = df.melt(['RESOURCENAME', 'RESOURCETYPENAME'])
    df.rename(columns={'variable':'Date'}, inplace=True)
    df.to_excel(filepath)

注意:这将用新排序的新数据覆盖现有文件。 有关特定 arguments 的读取和写入 excel 文件,请参阅 pandas 文档

我建议在这里使用某种列表。 创建一个二维列表,然后在第二步中重新排列以具有正确的顺序。

您应该能够将 excel 文件的数据放入一个看起来就像您的第一个表一样的列表中。 然后创建第二个列表(或重新排列第一个列表),使其看起来像第二个表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM