将列添加到数据框熊猫的组

时间:2019-12-30 15:54:05

标签: python pandas dataframe

我有一个数据框:

    name    width
0   Filler  2
1   Col A   8
2   Filler  4
3   Col B   6

如何相对于id列向数据框添加新列?

例如:

  id  |   x   |   y 
   1  |  0.3  |  0.4
   1  |  0.2  |  0.5
   2  |  0.1  |  0.6
   2  |  0.9  |  0.1
   3  |  0.8  |  0.2
   3  |  0.7  |  0.3

2 个答案:

答案 0 :(得分:1)

因此,您的函数不会返回颜色名称,而是返回RGB值,如果这是您希望在颜色列中使用的值,则首先从唯一ID值构建字典,然后以注释中提到的@ anky_91方式应用字典。

d={x:random_color() for x in df.id.unique()}
df['color']=df['id'].map(d)

答案 1 :(得分:0)

可能要等到很晚,但是如果您需要替代方法,这是使用简单函数的另一种方法:

colors = ['Green', 'Black', 'Red']

def color(data):
    if data['id'] == 1:
        col = colors[0]
    if data['id'] == 2:
        col = colors[1]
    if data['id'] == 3:
        col = colors[2]
    return col

df['Colors'] = df.apply(color, axis = 1)
print(df)

#    id    x    y Colors
# 0   1  0.3  0.4  Green
# 1   1  0.2  0.5  Green
# 2   2  0.1  0.6  Black
# 3   2  0.9  0.1  Black
# 4   3  0.8  0.2    Red
# 5   3  0.7  0.3    Red