У меня есть пандасный фрейм данных, который выглядит примерно так:
df = pd.DataFrame(data, columns=["property_1", "property_2", "value"], index=my_index)
my_index property_1 property_2 value
<1, 1, 1> "A" "X" ...
<1, 1, 1> "A" "Y" ...
<1, 1, 2> "A" "X" ...
<1, 1, 4> "A" "X" ...
<1, 1, 4> "A" "Y" ...
<1, 1, 4> "B" "X" ...
<1, 1, 4> "B" "Y" ...
Я хочу создать сгруппированную гистограмму, например:
![desired group bar chart](https://i.stack.imgur.com/ePJOo.png)
Это довольно сложно, но в основном:
- Мне нужно уменьшить
my_index
до уникальных индексов, которые имеют значение для каждой комбинации property_1
и property_2
- Мне нужно найти уникальные комбинации
property_1
И property_2
, а не только уникальные значения каждого столбца в отдельности! - Я пытаюсь сгруппировать их в основном по
my_index
, а затем по комбинации property_1
и property_2
Я бы догадался, что путь к этому заключается в наличии кадра данныхсо следующим макетом:
my_index A-X A-Y B-X B-Y ...
<1, 1, 1> ... ... NaN NaN ...
<1, 1, 2> ... ... NaN NaN ...
и так далее.Затем можно отбросить столбцы с любыми значениями NaN
.Затем вы можете просто вызвать df.plot.bar(...)
на этом результирующем фрейме данных.
Но я не уверен, как таким образом перегруппировать эти строки в столбцы.У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ: Я должен отметить, что мне не нужно нужен ответ в пандах, я просто спрашиваю, есть ли такой.Если нет, я могу сам разобраться в данных.Но, возможно, у панд есть изящная однострочная для облегчения такой работы.