为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

缥缈止盈 2023-08-08 14:59:53
假设我有一个包含 100 张表的 Excel 文件。在玩具示例中,床单被称为 = ['Apple', 'Farm', 'Kitchen', 'Napkin']这些工作表有多个列,但它们都有一个名为“销售”的列我想要一个包含Sales所有 4 个产品的 python 数据框,方法是将工作表的名称附加到“Sales”一词它看起来像这样:Apple_Sales    Farm_Sales     Kitchen_Sales     Napkin_Sales05               52               104               7566              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}
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

请检查片段。

涉及的步骤

  1. 将列名称创建为工作表名称+销售额

  2. 读取Excel文件并转换为DataFrame

  3. 如果数据框中存在Sales,则将值存储在列表中。

  4. 合并 1 和 3 以创建工作表名称和销售值的键值对作为嵌套列表。

  5. 转置嵌套列表并根据索引值转换为数据帧

我的 Excel 文件看起来像这样

https://img1.sycdn.imooc.com//64d1e80e0001636f03270151.jpg

import pandas as pd

datadic = 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_Sales

0            4          10             17            27

1            8          14             21            31

"""


查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信