[英]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.