Mam kod biegowy w pętli.

Dla każdej iteracji pętli znajduję maksymalną wartość dla tego wiersza mojego Dataframe, a następnie utworzyłem listę indeksów kolumn, w których pojawi się ta wartość (ponieważ czasami może pojawić się więcej niż raz) i wreszcie biorę to max () tego Lista, aby nadać wskaźnikowi najwyższego kolumny dla tego wiersza zawierającego maksymalną wartość.

Kod, którego używam wygląda tak:

index = 0
for i in df['column']:
    maxValue = df.values[index, :].max()
    peaklist = df.index[df.values[index, :] == maxValue].tolist()
    lastpeak = max(peaklist)
    index += 1

Po zaktualizowaniu mojego Pythona (myślę, że to dlatego), mój "Peaklist" utworzenie zawodzi teraz z indexError mówiąc "Indeks Boolean nie pasował do indeksowanej tablicy wzdłuż wymiaru 0; Wymiar jest" X ", ale odpowiadający im wymiar boolski jest" Y ""

Spojrzałem na inne instancje na forach i nie można zdać się znaleźć łatwego rozwiązania jednorazowego, aby przepisać mój kod i uzyskać ten sam wynik, że wcześniej byłem. Czy ktoś może pomóc?

EDYTOWAĆ

Przykładowa dataframe:

0      1      2      3      4      5      6      7

a     100    200    200    150    100    125    200
b
c
d
e

W przypadku pierwszej iteracji w tym przykładzie "MaxValue" byłaby równa 200, utworzona "szczytowa lista" byłaby [2, 3, 7], a "LastPeak" byłby równy 7.

0
SlowlyLearning 19 kwiecień 2021, 15:41

1 odpowiedź

Najlepsza odpowiedź

Znalazłem rozwiązanie, najwyraźniej działa metodę numpy Tuple:

peaklist = np.where(df.values[index, :] == maxValue)
lastpeak = max(max(peak))

Zamierzam opuścić pytanie otwarte przez kilka dni w nadziei, że ktoś ma lepszą metodę lub wyjaśnienie tego, co rzeczywiście była kwestia.

0
SlowlyLearning 19 kwiecień 2021, 14:37