Utknąłem na wyodrębnianiu wartości jednej zmiennej warunkującej inną zmienną. Na przykład następująca ramka danych:
A B
p1 1
p1 2
p3 3
p2 4
Jak mogę sprawdzić, A
kiedy B=3
? Za każdym razem, gdy wyodrębniłem wartość A
, otrzymałem obiekt, a nie ciąg.
item()
na końcu.df.query
ipd.eval
wydaje się, że dobrze pasuje do tego przypadku użycia. Aby uzyskać informacje na tematpd.eval()
rodziny funkcji, ich funkcji i przypadków użycia, odwiedź stronę Dynamic Expression Evaluation w pandach przy użyciu pd.eval () .Odpowiedzi:
Możesz użyć,
loc
aby otrzymać serię spełniającą twój warunek, a następnieiloc
uzyskać pierwszy element:źródło
df.loc[df['B'] == 3, 'A'].item()
dla mnie też działa.Możesz spróbować
query
, co oznacza mniej pisania:źródło
df[df['B']==3]['A']
, zakładając, że df to twoje pandy.źródło
][
część.Użyj,
df[df['B']==3]['A'].values
jeśli chcesz tylko element bez nawiasówźródło
][
część.[0]
na końcu, aby uzyskać dostęp do wartości.Pracowałem również nad tymi operacjami klauzulowania i ekstrakcji dla mojego zadania.
źródło