您好,它的数据框如下所示:
ID Date Total_Amount priority
1 2007 4488 High
2 2007 40981 Low
3 2017 450 Medium
4 2008 1000 Low
每行是一个新人(ID),并且各行显示他们每年花费多少(总计)。
我想创建一个条形图,在x轴上使用年,将Total_Amount作为y轴高度,但是需要按优先级对其进行堆叠。例如如果2007年有10笔支出的钱,其Total_Amount总金额为100,000英镑,则按优先级将栏的高度设置为100,000(例如5笔高,4笔低和1笔中等)。
我尝试使用交叉表,将日期作为行,将优先级作为列,但是我没有得到Total_Amount花费的数据框,而每个优先级的人数却得到一个数据框。
答案 0 :(得分:0)
您可以先使用groupby()
,然后再使用unstack()
:
df2 = df.groupby(['Date','priority'])['Total_Amount'].sum().unstack('priority').fillna(0)
df2.plot(kind='bar', stacked=True)
产生:
答案 1 :(得分:0)
几乎相同,我们仍在使用crosstab
pd.crosstab(index=df.Date,columns=df.priority,values=df.Total_Amount,aggfunc='sum')\
.fillna(0).plot(kind='bar')