2016-09-01 16 views
0

私は財務パフォーマンスを持っています異なる企業の指標、1年に1つの行。今私は、会社ごとにすべての指標を特定の範囲で一列に並べたいと思っています。Pandas DataFrameの行を結合

は今私のデータは次のようになります。です

import numpy as np 
import pandas as pd 


startyear = 2014 
endyear = 2015 

df = pd.DataFrame(np.array([ 
['AAPL', 2014, 0.2, 0.4, 1.5], 
['AAPL', 2015, 0.3, 0.4, 2.0], 
['AAPL', 2016, 0.2, 0.3, 1.5], 
['GOGL', 2014, 0.4, 0.5, 0.5], 
['GOGL', 2015, 0.6, 0.8, 1.0], 
['GOGL', 2016, 0.3, 0.5, 2.0]]), 
columns=['Name', 'Year', 'ROE', 'ROA', 'DE']) 

newcolumns = (df.columns + [str(startyear)]).append(df.columns + [str(endyear)]) 

dfnew=pd.DataFrame(columns=newcolumns) 

私が持っているしたいと思いますどのような(例えば唯一の年2014 & 2015):

Name ROE2014 ROA2014 DE2014 ROE2015 ROA2015 DE2015 
AAPL 0.2  0.4  1.5 0.3  0.4  2.0 
GOOGL 0.4  0.5  0.5 0.6  0.8  1.0 

は、これまでのところ私は得ることができました新しい列名を使用していましたが、どういうわけかこの新しいDataFrameをどのように埋めるかについて頭を悩ますことはできません。おそらく

答えて

2

は、列名を調整し、その後、新しいデータフレームを作成する方が簡単:

# limit to data you want 
dfnew = df[df.Year.isin(['2014', '2015'])] 

# set index to 'Name' and pivot 'Year's into the columns 
dfnew = dfnew.set_index(['Name', 'Year']).unstack() 

# sort the columns by year 
dfnew = dfnew.sortlevel(1, axis=1) 

# rename columns 
dfnew.columns = ["".join(a) for a in dfnew.columns.values] 

# put 'Name' back into columns 
dfnew.reset_index() 
+0

うわー、それは、私がまさに必要おかげでたくさんです! – Don