我有一个带有timeseries索引的pandas数据帧。
一列包含买入信号,另一列包含卖出信号。

buy     0 0 1 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0
sell    0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0

我想在这个简单的模型中添加一个状态:在任何时候最多有1个股票:只有当你现在什么都没有的时候才买,当你有股票时卖出。
buy     0 0 1 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0
sell    0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0
wallet  0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0

如何基于df['wallet']df['buy']创建df['sell']列?

最佳答案

import pandas as pd

wallet = 0


def create_wallet(df_line):
    global wallet

    if df_line['buy']:
        wallet = 1

    elif df_line['sell']:
        wallet = 0

    return wallet


df = pd.DataFrame(
{'buy': [0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0], 'sell': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1]})
df['wallet'] = df.apply(create_wallet, axis=1)

10-05 23:42