График DataFrame для Pandas: указать столбец из MultiIndex для вторичного_г - PullRequest
0 голосов
/ 23 мая 2018

Я строю многоиндексные столбцы DataFrame.

Каков синтаксис для указания столбцов (столбцов), которые должны быть нанесены на Secondary_y с использованием метода .plot для панд DataFrame?

Настройка

import numpy as np
import pandas as pd

mt_idx = pd.MultiIndex.from_product([['A', 'B'], ['first', 'second']])
df = pd.DataFrame(np.random.randint(0, 10, size=(20, len(mt_idx))), columns=mt_idx)

Мои попытки

df.plot(secondary_y=('B', 'second'))
df.plot(secondary_y='(B, second)')

Ничего из вышеперечисленного не сработало, так как все линии были построены на основной yОу.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Вы можете сбросить верхний уровень индекса столбца .Если вы не хотите изменять исходный кадр данных, это можно сделать на его копии.

df2 = df.copy()
df2.columns = df2.columns.map('_'.join)

df2.plot(secondary_y=('B_second'))

enter image description here

0 голосов
/ 23 мая 2018

Одно из возможных решений - построить каждый столбец, а затем указать secondary=True.Чтобы сделать это следующим образом, необходимо указать оси, на которые они будут нанесены:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

mt_idx = pd.MultiIndex.from_product([['A', 'B'], ['first', 'second']])
df = pd.DataFrame(np.random.randint(0, 10, size=(20, len(mt_idx))), columns=mt_idx)

df.A.plot(ax=ax)
df.B.plot(ax=ax, secondary_y=True)

plt.show()

enter image description here

...