gpt4 book ai didi

python - Pandas:删除列级别并合并标题

转载 作者:行者123 更新时间:2023-12-04 13:04:16 26 4
gpt4 key购买 nike

由于 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 的列标题。

最佳答案

您可以使用 list comprehension,但有必要转换 intstr :

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

关于python - Pandas:删除列级别并合并标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42069392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com