Здесь я прочитал фрейм данных с именем BTC из csv. Он содержит столбцы с именами High, Low, Open и Close. Затем я создаю пустой df для условной записи значений из BTC BTC = pd.read_csv (r'C: / Users / ...

0
Eli Bain 18 Янв 2021 в 11:01

1 ответ

Лучший ответ

Вы не предоставили образцы данных, поэтому я смоделировал их.

Гораздо проще просто определить новый столбец (как вы пробовали), а затем отфильтровать его на основе этого. Петли не нужны. Исключили вычисляемый столбец, поскольку вы не копируете его в своем образце кода.

Вы можете сделать movement.to_csv() для вывода.

import numpy as np
BTC = pd.DataFrame({
    "High":np.random.choice(100,5),
    "Low":np.random.choice(100,5),
    "Open":np.random.choice(100,5),
    "Close":np.random.choice(100,5),
    "TrendOrders":np.random.choice(["buy","sell","hold"],5)})

BTC["BuyOrder"] = BTC["TrendOrders"].eq("buy")  # add columns as per question
movement = BTC[BTC["BuyOrder"]].loc[:,BTC.columns != "BuyOrder"] # filter results using mask
movement

Выход

    High    Low Open    Close   TrendOrders
0   53  90  34  30  buy
1   98  54  16  48  buy
2   71  97  61  83  buy
4   33  80  50  72  buy

1
Rob Raymond 18 Янв 2021 в 09:25