首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫增加了一列依赖于字符串的浮标。

熊猫增加了一列依赖于字符串的浮标。
EN

Stack Overflow用户
提问于 2018-10-22 11:01:47
回答 2查看 74关注 0票数 0

我正试图根据熊猫DataFrame中的名字,用颜色绘制一个matplotlib图。在x,y图中,不同的名字点有不同的颜色。

数据文件:

代码语言:javascript
复制
    id  x   y   Names   
0   MAC004524   29.137983   11.864633   ACORN-M     
1   MAC004525   28.14       11.80       ACORN-M 
2   MAC004526   24.14       12.80       ACORN-C 
....

代码:

代码语言:javascript
复制
names = set(df['Names'])
colors = list(cmap(np.linspace(0, 1, len(names))))
df['color']=0
for a, c in zip(names, colors):
    mask = df.loc[df['Names'] == a]
    df.loc[mask, 'color'] = c
#but get an error here KeyError: "[('i', 'd') ('x',) ('y',) ('A', 'c', 'o', 'r', 'n')\n ('A', 'c', 'o', 'r', 'n', '_', 'g', 'r', 'o', 'u', 'p', 'e', 'd')\n ('c', 'o', 'l', 'o', 'r')] not in index"

那我就喜欢编故事

代码语言:javascript
复制
x = df['x']
y = df['y']
c= df['color']
plt.scatter(x, y, c=c, s=1)

所需df:

代码语言:javascript
复制
    id  x   y   Names    color
0   MAC004524   29.137983   11.864633   ACORN-M    [0.267004 0.004874 0.329415 1.      ] 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-22 14:02:45

你查过海上阴谋了吗?您可以立即从原始数据中制作这个情节:

代码语言:javascript
复制
import seaborn as sns
sns.scatterplot(x='x', y='y', hue='Names', data=df)
票数 1
EN

Stack Overflow用户

发布于 2018-10-22 13:59:09

问题应该是尝试在单元格上放置一个列表。如here所示,您应该使用.at而不是.loc。

也许不是最有效的方法,但它可以完成任务:

代码语言:javascript
复制
for a, c in zip(names, colors):
    mask = df[df['Names'] == a].index
    for value in mask:
        df.at[value, 'color'] = c

我添加了索引,并迭代了它的每个值,以指定的颜色替换,因为我还没有找到向.at命令的行索引添加多个值的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52927770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档