Как получить кластеры из сложенных баров с питоном (панды)

Вот как выглядит мой набор данных:

In [1]: df1=pd.DataFrame(np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"])

In [2]: df2=pd.DataFrame(np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"])

In [3]: df1
Out[3]: 
          I         J
A  0.675616  0.177597
B  0.675693  0.598682
C  0.631376  0.598966
D  0.229858  0.378817

In [4]: df2
Out[4]: 
          I         J
A  0.939620  0.984616
B  0.314818  0.456252
C  0.630907  0.656341
D  0.020994  0.538303

Я хочу иметь гистограмму с накоплением для каждого фрейма данных, но так как они имеют одинаковый индекс, я бы хотел иметь 2 столбца с разбивкой на индекс.

Я попытался построить оба на одной оси:

In [5]: ax = df1.plot(kind="bar", stacked=True)

In [5]: ax2 = df2.plot(kind="bar", stacked=True, ax = ax)

Но это частично совпадает.

Затем я попытался сначала объединить два набора данных:

pd.concat(dict(df1 = df1, df2 = df2),axis = 1).plot(kind="bar", stacked=True)

но здесь все сложено

Моя лучшая попытка:

 pd.concat(dict(df1 = df1, df2 = df2),axis = 0).plot(kind="bar", stacked=True)

Который дает :

Это в основном то, что я хочу, за исключением того, что я хочу, чтобы бар был заказан как

(df1, A) (df2, A) (df1, B) (df2, B) и т. д.

Я думаю, что есть хитрость, но я не могу ее найти!

После ответа @ bgschiller я получил это:

Что почти то, что я хочу. Я бы хотел, чтобы бар былсгруппированы по индексу, чтобы иметь что-то визуально понятное.

бонус : Наличие x-метки не избыточно, что-то вроде:

df1 df2    df1 df2
_______    _______ ...
   A          B

Спасибо за помощь.

Ответы на вопрос(6)

Ваш ответ на вопрос