在Pandas Dataframe上的if语句以添加列

蒂姆·皮卡(Tim Pickup)

我正在尝试在DataFrame中创建一个标记“信号”的新列。我似乎无法弄清楚如何在不设置变量和不执行以下操作的情况下在熊猫中实现此目的:

all_candles = pd.read_csv('ExportTest.csv', index_col=0)
all_candles.reset_index(level=0, inplace=True)
rows = len(all_candles.index)

for i in range(1,rows):
    current_RSI = all_candles.loc[i]['RSI']
    prev_RSI = all_candles.loc[i-1]['RSI']

    if prev_RSI < 30 and current_RSI >= 30:
        print('BULL SIGNAL')
    elif prev_RSI >= 70 and current_RSI < 70:
        print('BEAR SIGNAL')

它声明BULL SIGNAL或BEAR SIGNAL的地方,我希望它填写一个名为all_candles ['SIGNAL']的新列。我想要的理想解决方案是将它们全部包含在熊猫中,因此我不必进行for循环。

例如(原谅注意到这一点的粗略方法,我知道语法根本无效。)

    if all_candles['RSI'].shift(-1) < 30 and all_candles['RSI'] >= 30:
        all_candles['SIGNAL'] = 'BULL'
    elif all_candles['RSI'].shift(-1) >= 70 and all_candles['RSI'] < 70:
        all_candles['SIGNAL'] = 'BEAR'
    else
        all_candles['SIGNAL'] = 'NON'

对于可能的技术,任何帮助将不胜感激。

雷诺

您可以使用函数和.apply()

import pandas as pd

def signal_cat(RSI_col) :
    current_RSI=RSI_col['RSI']
    prev_RSI=RSI_col['prev_RSI']
    if prev_RSI < 30 and current_RSI >= 30:
        return 'BULL SIGNAL'
    elif prev_RSI >= 70 and current_RSI < 70:
        return 'BEAR SIGNAL'
    else:
        return 'NON'

#définition of your dataframe
all_candles=pd.DataFrame({'RSI':[10,40,75,79,10,20,30]})
all_candles['prev_RSI'] =all_candles['RSI'].shift(1)

all_candles['SIGNAL']=all_candles[['prev_RSI', 'RSI']].apply(signal_cat, axis=1)
print(all_candles)

结果:

   RSI  prev_RSI       SIGNAL
0   10       NaN          NON
1   40      10.0  BULL SIGNAL
2   75      40.0          NON
3   79      75.0          NON
4   10      79.0  BEAR SIGNAL
5   20      10.0          NON
6   30      20.0  BULL SIGNAL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在列列表上使用OR语句过滤Pandas Dataframe

来自分类Dev

如何在Pandas DataFrame上添加列标签

来自分类Dev

Pivot Pandas Dataframe添加列

来自分类Dev

在Pandas DataFrame Python中添加新列

来自分类Dev

遍历Pandas DataFrame,使用条件并添加列

来自分类Dev

转置DataFrame Pandas并添加新列

来自分类Dev

遍历Pandas DataFrame,使用条件并添加列

来自分类Dev

Python 3 Pandas使用length的if then语句添加一列

来自分类Dev

根据不同的DataFrame在Pandas DataFrame中添加一列

来自分类Dev

循环添加Pandas DataFrame

来自分类Dev

Pandas Dataframe根据其他列的计数添加列

来自分类Dev

使用OR语句过滤Pandas Dataframe

来自分类Dev

Pandas Dataframe根据上一行限制在该列中的最大值的基础上,向新列添加值

来自分类Dev

Pandas DataFrame基于多个条件的分组添加新的列值

来自分类Dev

Pandas Dataframe根据现有数据添加列

来自分类Dev

将值列添加到Pandas DataFrame

来自分类Dev

带有Lambda函数的Pandas Dataframe添加列

来自分类Dev

Pandas Dataframe问题:Apply函数用结果添加新列

来自分类Dev

将列添加到Pandas MultiIndex DataFrame

来自分类Dev

Pandas Dataframe-添加显示行数满足条件的列

来自分类Dev

将行追加到Pandas DataFrame会添加0列

来自分类Dev

如何在Pandas DataFrame中复制行并添加ID列

来自分类Dev

在Python Pandas Dataframe中动态添加列的数据处理

来自分类Dev

转置Pandas DataFrame后无法添加列

来自分类Dev

Pandas DataFrame列串联

来自分类Dev

Pandas DataFrame列串联

来自分类Dev

如何替换Pandas.DataFrame上的整个列

来自分类Dev

通过两列在pandas dataFrame上使用group by创建比例

来自分类Dev

在一行上删除 Pandas DataFrame 中的多列

Related 相关文章

热门标签

归档