Cześć wam mam spojrzeć na całym SO i google i nie mogę znaleźć coś podobnego ...Pandy: np.where z wielu warunków dotyczących dataframes
Mam X dataframe (zasadniczo składają się z jednego rzędu i 300 kolumnach) i inna ramka danych y o tym samym rozmiarze, ale o innych danych. Chciałbym zmodyfikować x tak, aby było 0, jeśli ma inny znak do y ORAZ x nie jest równe 0, w przeciwnym razie zostaw to takim, jakie jest. więc wymaga to użycia np.where z wieloma warunkami. Jednak w wielu przykładach warunków, które widziałem, wszystkie używają skalarów, a kiedy używam tej samej składni, wydaje się, że nie działa (kończy się ustawienie - wszystko - zero, brak błędu). Martwię się, że problemy z przypisaniem przez referencje są ukryte gdzieś lub indziej (y jest po przesunięciu, ale o ile mogę powiedzieć, że nie ma problemu z wyższego poziomu nad tym kodem) żadnych pomysłów?
kod próbuję debugowania jest:
tradesmade[i:i+1] = np.where((sign(x) != sign(y)) & (sign(x) != 0), 0, x)
który właśnie wraca kilka zer. Próbowałem także
ale to też nie działa. Byłem w tym od wielu godzin i jestem totalnie przegrany. proszę pomóż!
Dlaczego używasz jednowierszowej, 300-kolumnowej DataFrame zamiast Serii? – BrenBarn
hah tak, powinienem przewidzieć to pytanie. I rzeczywiście iteracji przez> 3000 wierszy tej ramce danych, jednak każde obliczenie zależy od wyników z poprzednich wierszy, a więc trzeba przejść jeden wiersz na raz. Wiem o wadze i szybkości wektoryzacji, ale pierwszeństwo w uzyskaniu odpowiedzi na to pytanie (co też wydaje się nieskuteczne w ...) – swyx
Klauzula "sign (x)! = 0" jest niepotrzebna. – acushner