我有一个数据框:
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
答案 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