在Python中从多个Excel工作表创建同名列的数据框

假设我有一个包含 100 张表的 Excel 文件。在玩具示例中,床单被称为 = ['Apple', 'Farm', 'Kitchen', 'Napkin']


这些工作表有多个列,但它们都有一个名为“销售”的列


我想要一个包含Sales所有 4 个产品的 python 数据框,方法是将工作表的名称附加到“Sales”一词


它看起来像这样:


Apple_Sales    Farm_Sales     Kitchen_Sales     Napkin_Sales


05               52               104               75

66              103               198               09

...              ..               ...               ..

到目前为止,我可以将 Excel 工作表导入到数据框字典中,但这不是我想要的


sales = r'D:/user/...../Sales.xlsx'


sal = pd.ExcelFile(Sales)

dictsdf = {sheets:sal.parse(sheets:sal) for sheets:sal in sal.sheet_names}


缥缈止盈
浏览 89回答 1
1回答

莫回无

请检查片段。涉及的步骤将列名称创建为工作表名称+销售额读取Excel文件并转换为DataFrame如果数据框中存在Sales,则将值存储在列表中。合并 1 和 3 以创建工作表名称和销售值的键值对作为嵌套列表。转置嵌套列表并根据索引值转换为数据帧我的 Excel 文件看起来像这样import pandas as pddatadic = pd.read_excel('data.xlsx', sheet_name=None)sheets=datadic.keys()sheets=[i+"_"+'Sales' for i in sheets]dictoframe=pd.Series(datadic).to_frame()print(dictoframe.to_markdown())"""|         | 0                    ||:--------|:---------------------|| Apple   | a  b  c  Sales       ||         | 0  1  2  3      4    ||         | 1  5  6  7      8    || Farm    | d  Sales   e   f     ||         | 0   9     10  11  12 ||         | 1  13     14  15  16 || Kitchen | Sales   g   h   i    ||         | 0     17  18  19  20 ||         | 1     21  22  23  24 || Napkin  | j   k  Sales   l     ||         | 0  25  26     27  28 ||         | 1  29  30     31  32 |"""listofsales=[i['Sales'].tolist() for i in dictoframe[0] if('Sales' in i)]        finaldic=dict(zip(sheets,listofsales))df=pd.DataFrame.from_dict(finaldic,orient='index').transpose()print(df)"""   Apple_Sales  Farm_Sales  Kitchen_Sales  Napkin_Sales0            4          10             17            271            8          14             21            31"""
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python