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 version
df[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
values
atributo 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