Pandas 从柱状图中的图例中删除列名
我有一个如下的数据帧Pandas 从柱状图中的图例中删除列名,pandas,bar-chart,Pandas,Bar Chart,我有一个如下的数据帧 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
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))
这将导致列名作为元组包含在图例中,如图所示
我怎么能没有列名而只拥有图例的值呢
请帮助一个简单的解决方法是:
df1=df.groupby(['batsman','non_striker']).sum().unstack().fillna(0)['partnershipRuns']
而不是:
df1=df.groupby(['batsman','non_striker']).sum().unstack().fillna(0)
为什么??因为您的聚合正在创建多索引。在绘图时,可以有不同的多索引值(这里是多个值,而不是“partnershipRuns”)。
如果因为我没有正确理解您的问题而需要其他内容,请提问。对于列中的“防止
多索引”
,请在groupby
之后指定“求和”列,并且fillna
此处无需添加参数fill\u value=0
:
另一个解决方案包括:
谢谢我也使用了pivot,但是我似乎得到了元组,尽管不是你提到的那样。您的解决方案也有效!
df1=df.groupby(['batsman','non_striker'])['partnershipRuns'].sum().unstack(fill_value=0)
df1=df.pivot_table(index='batsman',
columns='non_striker',
values='partnershipRuns',
aggfunc='sum',
fill_value=0)