下面是我的df:
df=pd.DataFrame(
{
'Color': ['red','blue','red','red','green','red','yellow'],
'Type': ['Oil', 'Aluminium', 'Oil', 'Oil', 'Cement Paint', 'Synthetic Rubber', 'Emulsion'],
'Finish' : ['Satin', 'Matte', 'Matte', 'Satin', 'Semi-gloss', 'Satin', 'Satin'],
'Use' : ['Interior', 'Exterior', 'Interior', 'Interior', 'Exterior', 'Exterior', 'Exterior'],
'Price' : [55, 75, 60, 60, 55, 75, 50]
}
)
我想创建一个数据透视表,该数据透视表将输出“颜色”、“颜色计数”、颜色的百分比或权重或每种计数,最后是一个总计行,在100%旁边输出总颜色计数。此外,我想添加一个标题,标题中包含今天的日期,格式如下(02 - 11月)。
这是我当前的轴,输入是近似值
today=datetime.date.today()
today_format=today.strftime("%d-m%")
pivot_table=pd.pivot_table(
data=df,
index='Color',
aggfunc={'Color':'count'}
)
df['Color'].value_counts(
normalize=True
).mul(100).round(1).astype(str) + '%'
有没有办法将更多的信息添加到透视表中作为标题、总计和额外的列?或者我只是尝试将透视表转换回DF并从那里编辑它?
我发现的主要困难是,由于我处理的是字符串数据,当我'aggfunc =' sum '时,它实际上将字符串相加。如果我尝试添加'margins=True,margins_name ='Total count',我会得到以下错误:
if isinstance(aggfunc[k], str):
KeyError: 'Type'
所需的表输出如下所示:
1条答案
按热度按时间t9eec4r01#
更新的答案
感谢Rabinzel的一个很好的建议,我们还可以将今天的日期作为列标题: