Сначала агрегируйте ваши данные, затем строите график с аргументом stacked=True
pivot_table
df.pivot_table('count', 'Year', 'Category', 'sum').plot.bar(stacked=True)
groupby
df.groupby(['Year', 'Category'])['count'].sum().unstack().plot.bar(stacked=True)
![enter image description here](https://i.stack.imgur.com/x3wDR.png)
Имейте в виду, что вы можете изменить агрегацию на что-то другое.
df.pivot_table('count', 'Year', 'Category', 'first').plot.bar(stacked=True)
df.groupby(['Year', 'Category'])['count'].first().unstack().plot.bar(stacked=True)
Кроме того, вы можете отбросить дубликаты до.
(
df.drop_duplicates(['Year', 'Category'])
.pivot_table('count', 'Year', 'Category')
.plot.bar(stacked=True)
)