Python 创建具有不同类别的堆叠条形图

Python 创建具有不同类别的堆叠条形图,python,pandas,visualization,Python,Pandas,Visualization,我有以下数据帧: print(df) Keys Amount Unit Period 0 [AWS Lambda] 0.0988477846 USD 2021-04-01 1 [AWS Step Functions]

我有以下数据帧:

print(df)
                                   Keys                       Amount          Unit      Period
0                          [AWS Lambda]                 0.0988477846           USD  2021-04-01
1                  [AWS Step Functions]                     0.155275           USD  2021-04-01
2  [Amazon Simple Notification Service]                            0           USD  2021-04-01
3          [AWS Key Management Service]                 0.0028137778           USD  2021-05-01
4                          [AWS Lambda]                 0.3184488309           USD  2021-05-01
5                  [AWS Step Functions]                     0.806125           USD  2021-05-01
6                          [AWS Lambda]                 0.2898902517           USD  2021-05-25
7                  [AWS Step Functions]                     0.604075           USD  2021-05-25
我想制作一个堆叠条形图,其中X轴上有
期间(日期),然后是堆叠条形图中
键的
数量值

预期的结果大致如下:

我遇到的问题是,每个
期间的组数不同。某些类别的
键只显示一次

使用简单的代码进行绘图,如
df.plot.bar(stacked=True)
可以省略类别或日期点

如果可能的话,我想在使用pandas dataframe及其本机plot函数时解决这个问题,但也可以使用其他库,如matplotlib

有没有其他方法可以解决这个问题?

与first一起使用:

df1 = df.explode('Keys').pivot_table(index='Period', 
                                     columns='Keys', 
                                     values='Amount', 
                                     aggfunc='sum')


print (df1)
Keys        AWS Key Management Service  AWS Lambda  AWS Step Functions  \
Period                                                                   
2021-04-01                         NaN    0.098848            0.155275   
2021-05-01                    0.002814    0.318449            0.806125   
2021-05-25                         NaN    0.289890            0.604075   

Keys        Amazon Simple Notification Service  
Period                                          
2021-04-01                                 0.0  
2021-05-01                                 NaN  
2021-05-25                                 NaN  

df1.plot.bar(stacked=True)