2017-02-06 9 views
1

groupby + unstackの結果、私のカラムには1つの追加レベルが追加されました。機能list(df.columns.values)は私がレベルをドロップし、これらのタイトルをマージ、次のような結果を得るためにしたいと思いパンダ:ドロップ列レベル&マージタイトル

[('CompanyId', ''), 
('CompanyName', ''), 
('City', ''), 
('Revenue', 2015), 
('Revenue', 2016), 
('Revenue', 2017)] 

を示しています。

['CompanyId', 
'CompanyName', 
'City', 
'Revenue2015', 
'Revenue2016', 
'Revenue2017'] 

機能df.droplevel(level=1)は私が1つのレベルを落とすことができますが、私はそれらを削除する前にレベル0のものにレベル1列タイトルを追加するかどうかはわかりません。

答えて

0

あなたはlist comprehension,使用することができますが、strに必要な変換int次のとおりです。

cols = [('CompanyId', ''), 
('CompanyName', ''), 
('City', ''), 
('Revenue', 2015), 
('Revenue', 2016), 
('Revenue', 2017)] 

df = pd.DataFrame(columns=pd.MultiIndex.from_tuples(cols), data = [[1,1,1,1,1,1]]) 
print (df) 
    CompanyId CompanyName City Revenue   
           2015 2016 2017 
0   1   1 1  1 1 1 


df.columns = [''.join((col[0], str(col[1]))) for col in df.columns] 
print (df) 
    CompanyId CompanyName City Revenue2015 Revenue2016 Revenue2017 
0   1   1  1   1   1   1 

df.columns = ['{}_{}'.format(x[0], str(x[1])) for x in df.columns] 
print (df) 
    CompanyId_ CompanyName_ City_ Revenue_2015 Revenue_2016 Revenue_2017 
0   1    1  1    1    1    1 
関連する問題