Tengo un marco de datos que tiene caracteres; quiero un resultado booleano por fila que me diga si todas las columnas de esa fila tienen el mismo valor.
Por ejemplo, tengo
df = [ a b c d
0 'C' 'C' 'C' 'C'
1 'C' 'C' 'A' 'A'
2 'A' 'A' 'A' 'A' ]
y quiero que el resultado sea
0 True
1 False
2 True
He intentado .todos, pero parece que solo puedo comprobar si todos son iguales a una letra. La única otra forma en que puedo pensar en hacerlo es haciendo un único en cada fila y ver si eso es igual a 1. Gracias por adelantado.
Creo que la forma más limpia es comparar todas las columnas con la primera columna usando eq:
In [11]: df
Out[11]:
a b c d
0 C C C C
1 C C A A
2 A A A A
In [12]: df.iloc[:, 0]
Out[12]:
0 C
1 C
2 A
Name: a, dtype: object
In [13]: df.eq(df.iloc[:, 0], axis=0)
Out[13]:
a b c d
0 True True True True
1 True True False False
2 True True True True
Ahora puede usar todos (si todos son iguales al primer elemento, todos son iguales):
In [14]: df.eq(df.iloc[:, 0], axis=0).all(1)
Out[14]:
0 True
1 False
2 True
dtype: bool
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras