熊猫:降低柱级&合并标题

时间:2017-02-06 13:49:04

标签: python pandas

由于groupby + unstack,我的列现在有一个额外的级别。函数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 :(得分:0)

您可以使用list comprehension,,但必须将int转换为str

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