首页 > 解决方案 > 如何手动添加标签以有效地绘制或映射字典以显示在绘图上

问题描述

我正在与两个Pandas dataframes. 在第一个dataframe. 我有兴趣将ProductIDCompanyName购买产品的人相匹配。

为了解决这个问题的匹配。我先创建一个empty dictionary然后loop通过rowsdataframeupdate如下dictionary

Slice = {}
for i,j in df.iterrows():
    Slice.update({j.ProductID:j.CompanyName})

现在我正在尝试绘制productID并放置与之相关label的公司ProductID

plt.figure(figsize=(30,25))
color = ["#FF0000", "#00FF00", "#008080", "#FF00FF",
          "#FFD088", "#B3AFB2", "#A9CCE3", "#3333eb"]
figure1 = df.ProductID.value_counts().nlargest(8).plot(kind="bar", color=color)
figure1.tick_params(labelsize=30)
Tar_1 = [Slice[124],Slice[920],Slice[162],Slice[166], Slice[165], Slice[923],Slice[1759], Slice[476]]

plt.legend(handles=Tar_1)

我收到以下错误:AttributeError: 'str' object has no attribute 'get_label'

请问我该如何解决这个问题?或者你有更好的方法吗?我在想从创建mappingproductID字典但是创建的列生成了所有NaN

好心提醒。

标签: pythonpandasdataframedictionarymatplotlib

解决方案


我认为解决此问题的最佳方法是将感兴趣的两列确实转换为字典,然后将该字典映射到该列。

map_obj = dict(df[['ProductID', 'CompanyName']].values)
df['Product_Company'] = df['ProductID'].map(map_obj)

推荐阅读