2
我有一個excel工作表,數據以下列方式存儲。有組織的熊貓數據框中的Excel表格
我想這個數據整理成數據幀的熊貓,使它看起來像下面...
有此格式的數據將讓我輕鬆使用數據透視表並進行分析。
如果在Excel中有一個簡單的方法來做到這一點,請讓我知道。 Python會是更好的選擇,因爲我有數百個這樣的表,每個表都有數百行和列。
我有一個excel工作表,數據以下列方式存儲。有組織的熊貓數據框中的Excel表格
我想這個數據整理成數據幀的熊貓,使它看起來像下面...
有此格式的數據將讓我輕鬆使用數據透視表並進行分析。
如果在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)
從那裏我找到了熊貓包的類型,你需要操作的非常有用的解析月/年值,設置多指數以便容易重塑(通過堆棧)。
import pandas as pd
df = pd.read_excel('data_so.xlsx', skiprows=3)
columns = pd.MultiIndex.from_tuples([('A', 'Price'), ('A', 'Quantity'),
('B', 'Price'), ('B', 'Quantity'),
('C', 'Price'), ('C', 'Quantity')],
names=['letters', 'index'])
index = pd.MultiIndex.from_arrays(df.ix[:,:2].values.T,names=('Item', 'Code'))
df2 = pd.DataFrame(df.ix[:,2:].values, columns=columns, index=index)
df3 = df2.stack('letters').reset_index()
然後,我們可以設置月和年,我們收集到的值:
df3['Year'] = year
df3['Month'] = month
您可以進一步調用多指標和堆到價格和數量安排到你想要的東西。這不完全乾淨,但它解決了你的問題。
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()
的感謝!有用 :) –