Удалить имя столбца из легенды на панели панд - PullRequest
0 голосов
/ 26 января 2019

У меня есть датафрейм, как показано ниже

        batsman      non_striker  partnershipRuns
0      SK Raina       A Flintoff               23
1      SK Raina         DR Smith               90
2      SK Raina     F du Plessis               36
3      SK Raina        JA Morkel               14
10     MS Dhoni    CK Kapugedera               18
11     MS Dhoni         DJ Bravo               51
12     MS Dhoni     F du Plessis               27
13     MS Dhoni        JA Morkel               12
14     MS Dhoni         JDP Oram                6

Мне удалось создать линейчатую диаграмму с использованием

df1=df.groupby(['batsman','non_striker']).sum().unstack().fillna(0)
df1.plot(kind='bar',stacked=True,legend=True)
plt.legend(loc='center left', bbox_to_anchor=(1.0, 0.5))

В результате имя столбца включается в легенду в виде кортежа, как показано на рисунке. enter image description here

Как я могу не иметь имя столбца и просто иметь значение для легенды?

Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Для предотвращения MultiIndex в столбцах укажите столбец для суммы после groupby, также fillna здесь не обязательно, добавьте параметр fill_value=0 в unstack:

df1=df.groupby(['batsman','non_striker'])['partnershipRuns'].sum().unstack(fill_value=0)

Другое решение с pivot_table:

df1=df.pivot_table(index='batsman',
                   columns='non_striker',
                   values='partnershipRuns',
                   aggfunc='sum',
                   fill_value=0)
0 голосов
/ 26 января 2019

Простое решение для вас, было бы сделать:

df1=df.groupby(['batsman','non_striker']).sum().unstack().fillna(0)['partnershipRuns']

вместо:

df1=df.groupby(['batsman','non_striker']).sum().unstack().fillna(0)

Почему?Потому что ваши агрегаты создают MultiIndex.И когда вы строите графики, у вас могут быть разные значения multiIndexes (здесь несколько значений вместо того, чтобы быть «partnershipRuns»).Если вы хотите что-то еще, потому что я не правильно понял ваш вопрос, просто спросите.

...