我在excel(xls)中有下表:
Quarter Q1 Q1 Q1
Year 2013 2014 2015
Company A A A
PA 500 300 963
NY 200 150 1500
我想使用Python Pandas创建下表:
Quarter Year State Company Amount
Q1 2013 PA A 500
Q1 2014 PA A 300
Q1 2015 PA A 963
Q1 2013 NY A 200
Q1 2014 NY A 150
Q1 2015 NY A 1500
编辑:我已经使用每个@jezrael建议的以下代码:
import pandas as p
df = p.read_excel('test.xls')
df = df.set_index('0')
df = df.T.stack().reset_index(name='idx')
df.columns = ['Quarter', 'Year', 'Company', 'State', 'Amount']
df = df[['Quarter', 'Year', 'State', 'Company', 'Amount']]
df = df.sort_values(by=['State'], ascending=['False']).reset_index(drop=True)
print(df)
我不断收到以下错误:
File "pandas\hashtable.pyx", line 676, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12216)
KeyError: '0'
我也尝试了0,同样的错误 KeyError: 0
非常接近您想要的内容:
df = pd.read_excel('test.xls', header=None, index_col=0)
print df
# 1 2 3
#0
#Quarter Q1 Q1 Q1
#Year 2013 2014 2015
#Company A A A
#PA 500 300 963
#NY 200 150 1500
#set indexes
df = df.T.set_index(['Quarter', 'Year', 'Company'])
#stack and reset index
df = df.stack().reset_index(name='idx')
#rename and reorder columns
df.columns = ['Quarter', 'Year', 'Company', 'State', 'Amount']
df = df[['Quarter', 'Year', 'State', 'Company', 'Amount']]
#sort by column State
df = df.sort_values(by=['State'], ascending=['False']).reset_index(drop=True)
print df
# Quarter Year State Company Amount
#0 Q1 2013 NY A 200
#1 Q1 2014 NY A 150
#2 Q1 2015 NY A 1500
#3 Q1 2013 PA A 500
#4 Q1 2014 PA A 300
#5 Q1 2015 PA A 963
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句