当dataframe的'low_winner'字段小于0.5%时,‘buy_signal’的值为1,否则为0,同时,新增‘buy_price’字段,该字段值为同一行‘收盘价’的值
时间: 2024-04-09 12:29:18 浏览: 19
好的,您可以使用以下代码来实现您的要求:
```python
import pandas as pd
# 假设您已经有一个名为df的DataFrame,其中包含'low_winner'和'收盘价'列
df['buy_signal'] = df['low_winner'].apply(lambda x: 1 if x < 0.005 else 0)
df['buy_price'] = df['收盘价']
print(df)
```
这会在现有的DataFrame中添加'buy_signal'和'buy_price'两列,并根据'low_winner'的值设置相应的值。如果'low_winner'小于0.5%,'buy_signal'的值将为1,否则为0。'buy_price'的值将与相应行的'收盘价'保持一致。
请确保将代码中的'low_winner'、'收盘价'和DataFrame的名称替换为您实际使用的列名和DataFrame名称。
相关问题
df_stock为dataframe 当high_winner大于95%时,且buy_signal的值为0时,则sell_signal的值为-1,否则为0
感谢您的补充说明。根据您的描述,我已经更新了代码以符合您的要求。以下是更新后的代码示例:
```python
import pandas as pd
# 读取数据集
df_stock = pd.read_csv("your_data.csv", parse_dates=["date"])
df_stock.set_index("date", inplace=True)
# 新增字段 bought 和 sold,初始值为 0
df_stock["bought"] = 0
df_stock["sold"] = 0
# 遍历数据集
for index, row in df_stock.iterrows():
low_winner = row["low_winner"]
high_winner = row["high_winner"]
buy_signal = 0
sell_signal = 0
# 判断买入信号
if low_winner < 0.005:
buy_signal = 1
# 判断卖出信号
if high_winner > 0.95:
if buy_signal == 0:
sell_signal = -1
# 更新买入和卖出字段
if buy_signal == 1 and row["bought"] == 0:
df_stock.at[index, "bought"] = 1
if sell_signal == -1 and row["bought"] == 1 and row["sold"] == 0:
df_stock.at[index, "sold"] = -1
# 忽略买入信号
if row["sold"] == -1:
df_stock.at[index, "buy_signal"] = 0
# 打印更新后的数据集
print(df_stock)
```
运行此代码将更新数据集中的 "bought" 和 "sold" 字段,并在最后打印更新后的数据集。根据您的要求,当 "high_winner" 大于95% 且 "buy_signal" 为0 时,"sell_signal" 将设置为-1。
python df_stock的index为时间,还有10个字段:开盘价 ,收盘价 ,最高价 ,最低价,open_winner, high_winner, low_winner close_winner,buy_signal ,sell_signal。 当buy_signal的值为1的时候为买入信号,sell_signal的值为-1时为卖出信号。买入价和卖出价都已“收盘价”计算。 注意: 1、先买入,然后才能卖出。如果确认买入,增加字段‘bought’,值为1,其余为0,, 如果确认卖出,新增‘sold
抱歉,我可能理解错了您的问题。您是否想知道如何根据上述条件对DataFrame进行操作?如果是这样,您可以按照以下步骤进行:
1. 首先,创建一个名为`bought`的新列,并将其初始化为0。
`df_stock['bought'] = 0`
2. 然后,使用条件语句将`bought`列中相应位置的值设置为1。
`df_stock.loc[df_stock['buy_signal'] == 1, 'bought'] = 1`
3. 创建一个名为`sold`的新列,并将其初始化为0。
`df_stock['sold'] = 0`
4. 使用条件语句将`sold`列中相应位置的值设置为1。
`df_stock.loc[df_stock['sell_signal'] == -1, 'sold'] = 1`
这样,您就可以根据买入信号和卖出信号来更新`bought`和`sold`列的值了。
注意:以上代码假设您的DataFrame变量名为`df_stock`,请根据您的实际情况进行相应更改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)