Dodanie obliczonych wartości do DataFrame'u.

Odpowiedz Nowy wątek
2018-11-28 15:49
0

Witam. Dana część programu printuje mi profit.

Printuje mi to tak 2771 liczb:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-2.0399929999999813
-7.120010000000008
0
-1.4900060000000224
6.930008000000015
4.720000999999968
2.369995000000017
-4.740004999999968
-0.00999500000003195
3.1100009999999827
-7.449996999999968
-2.7600100000000225
-4.910002999999989
-5.199996999999996
...

Oblicza wszystko ok. Teraz chcę to dodać do swego dataframe'u data_pd i nazwać tę kolumnę 'profit'. Jak dodaję za pomocą data_pd['profit'] = one_position_profit, dodaje mi tylko jedną wartość we wszystkie wersy dataframe'u.

for index in range(len(data_pd)):
    one_position_profit = 0
    take_profit = 10
    make_zero = False
    row = data_pd.iloc[index]
    if make_zero == True:
        row ['Position'] = 0
    if row ['Position'] != 0:
        one_position_profit = one_position_profit + row ['total_profit']
        #data_pd['profit'] = one_position_profit
    if (row ['Sell Entry'] == True) or (row['Buy Entry'] == True):
        one_position_profit = 0
        make_zero = False
    if one_position_profit > take_profit:
        make_zero = True
    print(one_position_profit)
edytowany 1x, ostatnio: Beata Griškevič, 2018-11-28 15:52

Pozostało 580 znaków

2018-11-28 18:54
0

Gdy przypisujesz wartość skalarną do kolumny w DataFrame, zostaje wrzucona w każdym wierszu. Nie lepiej byłoby Ci operować na całych kolumnach DataFrame i używać np. DataFrame.loc? Mogłabyś zrobić np. coś takiego i pozbyć się pętli:

# blah blah blah
df_data = df_data.assign(profit=0)
df_data.loc[df_data['Position'] != 0, 'profit'] = one_position_profit + df_data['Position']
# blah blah blah

Gdzie one_position_profit mogłoby być w zasadzie zarówno skalarem, jak i obiektem Series (uwaga na indeksowanie) czy listą o długości zgodnej z df_data.shape[0]


Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0