Python 将Excel表格放入数据框中

Python 将Excel表格放入数据框中,python,excel,pandas,Python,Excel,Pandas,我有一个excel工作表,数据存储方式如下 我想把这些数据组织成一个Pandas数据框架,这样它看起来像下面的 将数据格式化为这种格式将使我能够轻松地使用数据透视表并进行分析 如果有一个简单的方法在excel中也可以做到这一点,请让我知道。Python将是更好的选择,因为我有数百个这样的表,每个表都有数百行和数百列 这就是我用Python解决问题的方法,尽管可能有一个更优雅的解决方案 首先,我将使用openpyxl解析月/年值 from openpyxl import load_workbo

我有一个excel工作表,数据存储方式如下

我想把这些数据组织成一个Pandas数据框架,这样它看起来像下面的

将数据格式化为这种格式将使我能够轻松地使用数据透视表并进行分析


如果有一个简单的方法在excel中也可以做到这一点,请让我知道。Python将是更好的选择,因为我有数百个这样的表,每个表都有数百行和数百列

这就是我用Python解决问题的方法,尽管可能有一个更优雅的解决方案

首先,我将使用openpyxl解析月/年值

from openpyxl import load_workbook

wb = load_workbook('data_so.xlsx')
sheet_ranges = wb['Sheet1']

year = str(sheet_ranges['A1'].value)
month = str(sheet_ranges['B1'].value)
从那里,我发现pandas包对于您需要的操作类型非常有用,设置多个索引可以轻松地重塑形状(通过堆栈)

然后,我们可以将月份和年份设置为我们收集的值:

df3['Year'] = year
df3['Month'] = month

您可以进一步调用MultiIndex和stack,根据需要安排价格和数量。这不是很干净,但它解决了你的问题

df3.index = pd.MultiIndex.from_arrays(df3[['Item','Code','letters','Year','Month']].values.T,
                                      names=('Item', 'Code','letters','Year','Month'))
df4 = df3[['Price','Quantity']].stack()
df5 = pd.DataFrame(df4)
df5.columns = ['Value']
df5.reset_index()

df3.index = pd.MultiIndex.from_arrays(df3[['Item','Code','letters','Year','Month']].values.T,
                                      names=('Item', 'Code','letters','Year','Month'))
df4 = df3[['Price','Quantity']].stack()
df5 = pd.DataFrame(df4)
df5.columns = ['Value']
df5.reset_index()