Biorąc pod uwagę dużą ramkę danych pandy z kolumnami Kolumna_1 ... Kolumna_n i próg X. Jaki jest skuteczny sposób ustawienia wszystkich kolejnych kolumn na X po naruszeniu X w każdym wierszu. Tj. powiedzmy, że mamy próg 1 i ramkę danych, oryginalna ramka danych jest taka jak w łączu:

enter image description here

Wtedy zaktualizowana dataframe powinna wyglądać jak w drugim linku:

enter image description here

Z góry bardzo dziękuję!

0
Alexander Kaus 24 styczeń 2022, 17:13
Proszę podać ramki danych jako tekst, a nie obrazy
 – 
mozway
24 styczeń 2022, 17:22
- Skomentowałem poniżej twoją odpowiedź. Myślę, że moje oryginalne wyjaśnienie tego, czego szukam, jest mylące?
 – 
Alexander Kaus
24 styczeń 2022, 17:54

1 odpowiedź

Najlepsza odpowiedź

Próbować:

df = pd.DataFrame({'A': [0.1, 1.1, 0.4], 'B': [0.3, 0.0, 0.3],
                   'C': [1.2, -2.0, -0.1], 'D': [5.0, 4.0, 0.0]})

out = df.gt(1).mask(lambda x: x == False).ffill(axis=1).astype(float).fillna(df)
print(out)

# Output
     A    B    C    D
0  0.1  0.3  1.0  1.0
1  1.0  1.0  1.0  1.0
2  0.4  0.3 -0.1  0.0
0
Corralien 24 styczeń 2022, 18:02
Dzięki, jednak to nie do końca. Twoja logika obcina wszystkie wartości abs(x)>1 do 1. Jednak logika ma na celu ustawienie wszystkiego w kolejnych kolumnach na 1 (tak jak gdyby A_ij > 1, to A_ik = 1 dla wszystkich k>=j). Na przykład w kolumnie B w ramce danych indeks 1 pozostał 0, ale powinien zostać zaktualizowany do 1. Przepraszam, jeśli źle to wyjaśniłem
 – 
Alexander Kaus
24 styczeń 2022, 17:51
OK. rozumiem :) (wierzę)
 – 
Corralien
24 styczeń 2022, 17:56
Zaktualizowałem swoją odpowiedź. Czy możesz to sprawdzić?
 – 
Corralien
24 styczeń 2022, 18:03
To idealne! Wielkie dzięki :)
 – 
Alexander Kaus
24 styczeń 2022, 18:49