Mam wartość DataFrame
, która zawiera wartości zapasów.Nowa kolumna na podstawie warunkowego zaznaczenia z wartości 2 innych kolumn w Pandas DataFrame
Wygląda to tak:
>>>Data Open High Low Close Volume Adj Close Date
2013-07-08 76.91 77.81 76.85 77.04 5106200 77.04
Kiedy próbuję dokonać warunkowego nową kolumnę z poniższej instrukcji if:
Data['Test'] =Data['Close'] if Data['Close'] > Data['Open'] else Data['Open']
pojawia się następujący błąd:
Traceback (most recent call last):
File "<pyshell#116>", line 1, in <module>
Data[1]['Test'] =Data[1]['Close'] if Data[1]['Close'] > Data[1]['Open'] else Data[1]['Open']
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Użyłem następnie a.all()
:
Data[1]['Test'] =Data[1]['Close'] if all(Data[1]['Close'] > Data[1]['Open']) else Data[1]['Open']
W rezultacie wybrano całą kolumnę ['Open']
. Nie uzyskałem pożądanego warunku, którym jest wybranie za każdym razem największej wartości między kolumnami ['Open']
i ['Close']
.
Każda pomoc jest doceniana.
Dzięki.
gdzie mam '' df ['B'] '' możesz umieścić skalar (np. 'Zamknij'), ale powinieneś to zrobić w innej kolumnie (np. Kolumny, z których jesteś wybierany, '' df [' A '] '' nie musi być takie samo jak maska '' df [' A ']> df [' B '] '', w przeciwnym razie pojawi się kolumna mieszana/ciąg, na ogół nieprzydatna (i nie efektywne dla wszystkiego). Możesz także mieć inną kolumnę, w której mam '' df ['B'] '' jako wartość zastępczą (i pandy dopasują ją do kolumny selektora) .FYI to dokładnie to samo: '' df .loc [df ['A']> df ['B'], 'A'] = df ['B'] '' – Jeff