python - 如何手动添加标签以有效地绘制或映射字典以显示在绘图上
问题描述
我正在与两个Pandas dataframes
. 在第一个dataframe
. 我有兴趣将ProductID
与CompanyName
购买产品的人相匹配。
为了解决这个问题的匹配。我先创建一个empty dictionary
然后loop
通过rows
的dataframe
和update
如下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'
请问我该如何解决这个问题?或者你有更好的方法吗?我在想从创建mapping
的productID
字典但是创建的列生成了所有NaN
好心提醒。
解决方案
我认为解决此问题的最佳方法是将感兴趣的两列确实转换为字典,然后将该字典映射到该列。
map_obj = dict(df[['ProductID', 'CompanyName']].values)
df['Product_Company'] = df['ProductID'].map(map_obj)
推荐阅读
- r - 如何在 for 循环中 rbind 数据帧
- angular - Highcharts - 如何以角度更新系列?
- cognos - Cognos 11 - 允许在数据模块中多次使用数据库表
- dart - 在flutter中解析嵌套的JSON列表时出错
- html - 如何将 div 定位在 2 个其他 div 的交叉点上方?
- android - FlutterView: AppBarLayout$ScrollingViewBehavior
- python - 在 Python 中用字节解析 JSON
- ios - ARKit 没有按预期工作,如果表面很平坦,比如单色墙,则无法检测到
- php - Sqlite 没有在文本字段中正确排序日期
- r - 尝试从全球恐怖主义数据库读取数据时出现“列多于列名”错误