Python 根据字符串添加一列浮动

Python 根据字符串添加一列浮动,python,pandas,Python,Pandas,我正在尝试根据熊猫数据框中的名称用颜色绘制matplotlib绘图。因此,在x、y绘图中,不同的名称点具有不同的颜色 数据帧: 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 .... 代码:

我正在尝试根据熊猫数据框中的名称用颜色绘制matplotlib绘图。因此,在x、y绘图中,不同的名称点具有不同的颜色

数据帧:

    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 
....
代码:

那么我想画

x = df['x']
y = df['y']
c= df['color']
plt.scatter(x, y, c=c, s=1)
所需df:

    id  x   y   Names    color
0   MAC004524   29.137983   11.864633   ACORN-M    [0.267004 0.004874 0.329415 1.      ] 

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

可能不是最有效的方法,但它可以完成工作:

for a, c in zip(names, colors):
    mask = df[df['Names'] == a].index
    for value in mask:
        df.at[value, 'color'] = c

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

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

可能不是最有效的方法,但它可以完成工作:

for a, c in zip(names, colors):
    mask = df[df['Names'] == a].index
    for value in mask:
        df.at[value, 'color'] = c

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

您研究过seaborn绘图吗?您可以立即从原始数据帧进行绘图:

import seaborn as sns
sns.scatterplot(x='x', y='y', hue='Names', data=df)

你调查过seaborn的阴谋吗?您可以立即从原始数据帧进行绘图:

import seaborn as sns
sns.scatterplot(x='x', y='y', hue='Names', data=df)