Tengo un marco de datos:
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
¿Cómo puedo agregar una nueva columna al marco de datos en relación con la columna de identificación?
Por ejemplo:
id | x | y | color
1 | 0.3 | 0.4 | 'green'
1 | 0.2 | 0.5 | 'green'
2 | 0.1 | 0.6 | 'black'
2 | 0.9 | 0.1 | 'black'
3 | 0.8 | 0.2 | 'red'
3 | 0.7 | 0.3 | 'red'
2 respuestas
Probablemente tarde, pero si quieres alternativas, aquí hay otra forma con una función simple:
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
Por lo tanto, su función no devuelve nombres de color, sino los valores RGB, si esto es lo que desea en la columna de color, cree el diccionario primero a partir de los valores de identificación únicos y aplique el diccionario de la manera @ anky_91 mencionada en los comentarios.
d={x:random_color() for x in df.id.unique()}
df['color']=df['id'].map(d)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.