Powiedzmy, że mam następującą ramkę DataFrame
Numer listu A 1 B 2 C 3 D 4
Który można uzyskać za pomocą następującego kodu
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)
Teraz chcę uzyskać wartość C z kolumny Litery.
Wiersz poleceń
df[df.Letters=='C'].Letters
wróci
2 C Nazwa: litery, dtype: przedmiot
Jak mogę uzyskać tylko wartość C, a nie całe dwa wyjścia liniowe?
pd.DataFrame({'Letters': letters, 'Numbers': numbers})
Odpowiedzi:
Zwraca pierwszy element indeksu / serii zwrócony z tego wyboru. W tym przypadku wartość jest zawsze pierwszym elementem.
EDYTOWAĆ:
Lub możesz uruchomić loc () i uzyskać w ten sposób dostęp do pierwszego elementu. To było krótsze i tak to wdrażałem w przeszłości.
źródło
FutureWarning: "item" has been deprecated and will be removed in a future version
df[df.Letters=='C'].Letters.iloc[0]
. Tworzy pierwszy element (który jest również unikalny) w serii wyników.df[df.Letters=='C'].Letters.squeeze()
zamiast tego. Działa to w ten sam sposób. :)Użyj
values
atrybutu, aby zwrócić wartości jako tablicę np, a następnie użyj,[0]
aby uzyskać pierwszą wartość:EDYTOWAĆ
Osobiście wolę uzyskać dostęp do kolumn za pomocą operatorów indeksu dolnego:
Pozwala to uniknąć problemów, w których nazwy kolumn mogą zawierać spacje lub myślniki,
-
co oznacza, że dostęp za pomocą.
.źródło
.
do uzyskania dostępu do kolumn, ponieważ nie zawsze będzie to działać, na przykład, jeśli nazwa kolumny zaczyna się od wartości numerycznej lub występują znaki inne niż alfa, takie jak spacja, więc zawsze wolędf['col_name']
df['col_name']
notację zamiast.
notacji. Dzięki jeszcze raz.edytować:
w rzeczywistości możesz po prostu zindeksować zestaw danych jak każdą starą tablicę.
źródło