Digamos que eu tenha o seguinte DataFrame
Número da letra A 1 B 2 C 3 D 4
Que pode ser obtido por meio do seguinte 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)
Agora quero obter o valor C da coluna Letters.
A linha de comando
df[df.Letters=='C'].Letters
retornará
2 C Nome: Letras, dtype: objeto
Como posso obter apenas o valor C e não a saída de duas linhas inteiras?
pd.DataFrame({'Letters': letters, 'Numbers': numbers})
Respostas:
Isso retorna o primeiro elemento no Índice / Série retornado dessa seleção. Nesse caso, o valor é sempre o primeiro elemento.
EDITAR:
Ou você pode executar um loc () e acessar o primeiro elemento dessa forma. Isso era mais curto e é a maneira que implementei no passado.
fonte
FutureWarning: "item" has been deprecated and will be removed in a future version
df[df.Letters=='C'].Letters.iloc[0]
. Ele produz o primeiro elemento (que também é o único) na série de resultados.df[df.Letters=='C'].Letters.squeeze()
lugar. Isso funciona da mesma maneira. :)Use o
values
atributo para retornar os valores como uma matriz np e, em seguida, use[0]
para obter o primeiro valor:EDITAR
Eu pessoalmente prefiro acessar as colunas usando operadores subscritos:
Isso evita problemas onde os nomes das colunas podem ter espaços ou travessões
-
que significam acessar usando.
.fonte
.
para acessar colunas, pois isso nem sempre funcionará, por exemplo, se o nome da coluna começar com um valor numérico ou se houver caracteres não alfa, como um espaço no nome da coluna, então eu sempre prefirodf['col_name']
df['col_name']
notação em vez da.
notação. Obrigado novamente.editar:
na verdade, você pode apenas indexar o conjunto de dados como qualquer array antigo.
fonte