这是我按 State 和 Category 分组后的数据框。我试图按每个州的记录总数 (组合所有三个类别)创建一个递减的堆叠条形图。我尝试在绘制前 sort_values ,因为这里有一个“按州总计”列。不幸的是,我无法找到一种方法来正确地对此进行排序。
我已经尝试了一些组合,但是现在在那个令人沮丧的阶段有点..感觉我可能对此过于复杂了。
bool MapGenerator::isValid(std::string line) const {
// irrelevant stuff
if (line[i] == 'p') {
startCount++;
}
else if (line[i] == 'P') {
endCount++;
}
// irrelevant stuff
return something;
我希望得到的结果是该数据帧具有相同的格式,只是“状态”列按记录总数按降序排序。例如,加利福尼亚将以技术:359 +家具:444 +办公用品:1198 = 2001最大。
答案 0 :(得分:2)
您可以通过计算每个状态的总和并从中获取索引来找到状态的顺序。使用此顺序为数据框重新索引,然后绘制。像这样:
# Create sample data
np.random.seed(0)
index = pd.MultiIndex.from_product([['WA', 'NC', 'NY', 'ME', 'NE', 'SD', 'CA'], ['Furniture', 'Technology', 'Office Supplies']], names=['State', 'Category'])
df = pd.DataFrame(np.random.random(21), index=index, columns=['value'])
# Find order and plot
sort_ix = df.groupby(level='State').sum().sort_values('value', ascending=False).index
df.reindex(sort_ix, level=0).unstack().plot.bar(stacked=True)