我们希望值(例如
'GERMANY')成为列名,并且希望列名称(例如
'HOUR1')成为值-各种交换。
该
stack方法将列名称转换为索引值,并且该
unstack方法将索引值转换为列名称。
因此,通过将值移入索引,我们可以使用
stack和
unstack执行交换。
import pandas as pddatelisttemp = pd.date_range('1/1/2014', periods=3, freq='D')s = list(datelisttemp)*3s.sort()df = pd.Dataframe({'BORDER':['GERMANY','FRANCE','ITALY','GERMANY','FRANCE','ITALY','GERMANY','FRANCE','ITALY' ], 'HOUR1':[2 ,2 ,2 ,4 ,4 ,4 ,6 ,6, 6],'HOUR2':[3 ,3 ,3, 5 ,5 ,5, 7, 7, 7], 'HOUR3':[8 ,8 ,8, 12 ,12 ,12, 99, 99, 99]}, index=s)df = df.set_index(['BORDER'], append=True)df.columns.name = 'HOUR'df = df.unstack('BORDER')df = df.stack('HOUR')df = df.reset_index('HOUR')df['HOUR'] = df['HOUR'].str.replace('HOUR', '').astype('int')print(df)
产量
BORDER HOUR FRANCE GERMANY ITALY2014-01-01 1 2 2 22014-01-01 2 3 3 32014-01-01 3 8 8 82014-01-02 1 4 4 42014-01-02 2 5 5 52014-01-02 3 12 12 122014-01-03 1 6 6 62014-01-03 2 7 7 72014-01-03 3 99 99 99
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)