对于这样的dataframe:
d = {'id': [1,1,1,2,2], 'Month':[1,2,3,1,3],'Value':[12,23,15,45,34], 'Cost':[124,214,1234,1324,234]}
df = pd.DataFrame(d)
Cost Month Value id
0 124 1 12 1
1 214 2 23 1
2 1234 3 15 1
3 1324 1 45 2
4 234 3 34 2
字符串
我应用pivot_table
df2 = pd.pivot_table(df,
values=['Value','Cost'],
index=['id'],
columns=['Month'],
aggfunc=np.sum,
fill_value=0)
型
得到df 2:
Cost Value
Month 1 2 3 1 2 3
id
1 124 214 1234 12 23 15
2 1324 0 234 45 0 34
型
是否有一种简单的方法来格式化生成的 Dataframe 列名称,如
id Cost1 Cost2 Cost3 Value1 Value2 Value3
1 124 214 1234 12 23 15
2 1324 0 234 45 0 34
型
如果我这样做:
df2.columns =[s1 + str(s2) for (s1,s2) in df2.columns.tolist()]
型
我得到:
Cost1 Cost2 Cost3 Value1 Value2 Value3
id
1 124 214 1234 12 23 15
2 1324 0 234 45 0 34
型
如何摆脱额外的水平?
谢谢!2谢谢!
3条答案
按热度按时间kx1ctssn1#
使用@chrisb的答案中的线索,这正是我想要的:
字符串
其给出:
型
在多个索引列的情况下,this post很好地解释了这一点。为了完整起见,下面是如何操作:
型
zdwk9cvp2#
'id'
是索引名称,您可以将其设置为None
以删除。字符串
snvhrwxg3#
我不认为reset_index是正确的方法。如果df.columns.name是你试图删除的,也许你应该尝试:
字符串