Zamień wartości w kolumnach i wierszach w określonych warunkach [duplikat]
Mam następującą ramkę danych pandy:

i chcę sprawdzić, czy wartość w kolumnie 'A start'
jest ujemna. Jeśli jest ujemna niż zamień wartości w kolumnie 'start'
i 'end'
iw kolumnach 'A start'
oraz 'A end'
w wierszu, w którym
'A start'
ma wartość ujemną. Wynik powinien więc wyglądać następująco:

Próbowałem go rozwiązać, where
ale to nie zadziałało.
Używam Pythona 3.8.
Bardzo ci dziękuje za pomoc.
Odpowiedzi
Hej, spójrz na ten post, jest podobny do twojego pytania, może pomóc! Jeśli nie, daj mi znać, poszukaj innych opcji.
Jaka jest poprawna składnia zamiany wartości kolumn dla wybranych wierszy w ramce danych pandy przy użyciu tylko jednej linii?
Oto najprostsza metoda korzystania z where
df = pd.DataFrame()
df['start'] = [1,5,7,2]
df['end'] = [4,6,8,9,]
df['A start'] = [234, -475, -765, 113]
df['A end'] = [-654, 312, 987, -553]
df[['A start','A end']] = df[['A end','A start']].where(df['A start'] < 0 , df[['A start','A end']].values)
df
Wynik:
