<p>把我的评论变成一个答案:不是拆分数据帧,而是添加一个新的列和限定符来堆栈(small,medium,large)。然后按新列旋转框架并使用stacked=True选项打印。在</p>
<pre><code>import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# some data
dft = pd.DataFrame({"month" : ['January', 'October', 'November', 'December', 'January',
'June', 'July', 'August', 'September', 'October',
'November', 'December', 'January', 'November', 'December'],
"expediture" : [2.0, 91.53, 16.7, 50.4, 1240.3, 216.17, 310.77, 422.12,
513.53, 113.53, 377.249, 1179.41, 156, 2354.33, 157.45]})
# possible labels / months
labels = ['small', 'medium', 'large']
months = pd.date_range('2014-01','2014-12', freq='MS').strftime("%B").tolist()
full = pd.DataFrame(columns=labels, index=months)
#quantize data
dft["quant"] = pd.cut(dft["expediture"], bins = [0,100,500,np.inf], labels=labels)
# pivot data
piv = dft.pivot(values='expediture', columns="quant", index = "month")
# update full with data to have all months/labels available, even if not
# present in original dataframe
full.update(piv)
full.plot.bar(stacked=True)
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/RvNbi.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/RvNbi.png" alt="enter image description here"/></a></p>