Digamos que tengo el siguiente DataFrame
Número de letra A 1 B 2 C 3 D 4
Que se puede obtener a través del siguiente código
import pandas as pd
letters=pd.Series(('A', 'B', 'C', 'D'))
numbers=pd.Series((1, 2, 3, 4))
keys=('Letters', 'Numbers')
df=pd.concat((letters, numbers), axis=1, keys=keys)
Ahora quiero obtener el valor C de la columna Letras.
La linea de comando
df[df.Letters=='C'].Letters
volverá
2 C Nombre: Letras, dtipo: objeto
¿Cómo puedo obtener solo el valor C y no la salida completa de dos líneas?

pd.DataFrame({'Letters': letters, 'Numbers': numbers})Respuestas:
Esto devuelve el primer elemento del índice / serie devuelto por esa selección. En este caso, el valor es siempre el primer elemento.
EDITAR:
O puede ejecutar un loc () y acceder al primer elemento de esa manera. Esto fue más corto y es la forma en que lo he implementado en el pasado.
fuente
FutureWarning: "item" has been deprecated and will be removed in a future versiondf[df.Letters=='C'].Letters.iloc[0]. Produce el primer elemento (que también es el único) en la serie de resultados.df[df.Letters=='C'].Letters.squeeze()lugar. Esto funciona de la misma manera. :)Use el
valuesatributo para devolver los valores como una matriz np y luego use[0]para obtener el primer valor:EDITAR
Yo personalmente prefiero acceder a las columnas usando operadores de subíndice:
Esto evita problemas en los que los nombres de las columnas pueden tener espacios o guiones, lo
-que significa que se accede usando..fuente
.para acceder a las columnas, ya que esto no siempre funcionará, por ejemplo, si el nombre de la columna comienza con un valor numérico o si hay caracteres no alfabéticos, como un espacio en el nombre de la columna, así que siempre lo prefierodf['col_name']df['col_name']notación en lugar de la.notación. Gracias de nuevo.editar:
en realidad, puede indexar el conjunto de datos como cualquier matriz anterior.
fuente