为了账号安全,请及时绑定邮箱和手机立即绑定

使用布尔逻辑合并和过滤一个数据帧的多列

使用布尔逻辑合并和过滤一个数据帧的多列

回首忆惘然 2021-06-29 16:37:12
目标:将买入/卖出/中性/错误指标输出到单个 df[column],同时过滤掉“假”值。指标基于以下数据框列,然后用布尔语句制定:df['sma_10'] = pd.DataFrame(ta.SMA(df['close'], timeperiod=10), dtype=np.float, columns=['close'])      df['buy'] = pd.DataFrame(df['close'] > df['sma_10'], columns=['buy'])   df['buy'] = df['buy'].replace({True: 'BUY'})        df['sell'] = pd.DataFrame(df['close'] < df['sma_10'], columns=['sell'])     df['sell'] = df['sell'].replace({True: 'SELL'})         df['neutral'] = pd.DataFrame(df['close'] == df['sma_10'], columns=['neutral'])       df['neutral'] = df['neutral'].replace({True: 'NEUTRAL'})        df['error'] = pd.DataFrame((df['buy'] == False) & (df['sell'] == False) & (df['neutral'] == False), columns=['Error'])      df['error'] = df['error'].replace({True: 'ERROR'})df的当前输出buy  sell  Neutral ErrorFalse False False ERRORBUY False False FalseFalse SELL False FalseFalse False NEUTRAL Falsedf 的期望输出IndicatorERRORBUYSELLNEUTRAL尝试和方法:第一种方法:合并所有买入/卖出/中性/错误列并尝试删除“假”值。Dataframe 在出错之前只迭代一次。df['sma_10_indic']=[df['buy'].astype(str)+df['sell'].astype(str)+df['neutral'].astype(str)+df['error'].astype(str)].drop("False")我尝试了 if & elif 的子程序,例如:此方法也在第一个索引之前出错df['buy'] = pd.DataFrame(df['close'] > df['sma_10'])df['sell'] = pd.DataFrame(df['close'] < df['sma_10'])df['neutral'] = pd.DataFrame(df['close'] == df['sma_10'])error = ((buy == False) and (sell == False) and (neutral == False))if (df['buy'] == "True"):   df['sma_10_indic'] = pd.DataFrame("BUY",columns=['indicator'])elif (df['sell'] == "True"):   df['sma_10_indic'] = pd.DataFrame("SELL",columns=['indicator'])elif (df['neutral'] == "True"):   df['sma_10_indic'] = pd.DataFrame("NEUTRAL",columns=['indicator'])elif (error == True):   df['sma_10_indic'] = pd.DataFrame("ERROR",columns=['indicator'])我不确定前方的道路,我已经在这条路上撞墙了大约 14 个小时,没有明确的道路。我还尝试创建另一个单独的数据框并通过 concat 合并它们,但由于布尔值而没有运气。我对 python 和 pandas/dataframes 比较陌生,所以请耐心等待。先感谢您!
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信