首页 > 解决方案 > 如何测试现有数据框的条件并将结果放在新列上?

问题描述

      ID   Open  Close     SMA        EMA
30  UNITY  11.50  11.53  12.576  12.715570
31  UNITY  11.44  11.34  12.399  12.626823
32  UNITY  11.26  11.74  12.273  12.569609
33  UNITY  11.72  11.61  12.150  12.507699
34  UNITY  11.51  11.43  11.994  12.438170
35  UNITY  11.85  11.17  11.844  12.356352

我想测试以下代码

df[(df.SMA >= df.EMA) & 
    (((df.Open <= df.SMA) & (df.Close >= df.EMA)) 
        | ((df.Close >= df.EMA) & (df.Open <= df.EMA)) 
        | ((df.Open >= df.SMA) & (df.Close <= df.SMA)))]

在我的数据框上创建一个新列“TAZ”,如果满足条件,则每行反映“100”,否则为“0”。

尽管代码按照我的要求工作,但我无法将结果放在单独的列中。一点帮助将不胜感激!

标签: pandasdataframedata-sciencedata-analysis

解决方案


你可以np.where这样使用:

# filter condition
cond = (df.SMA >= df.EMA) & (((df.Open <= df.SMA) & (df.Close >= df.EMA)) | ((df.Close >= df.EMA) & (df.Open <= df.EMA)) | ((df.Open >= df.SMA) & (df.Close <= df.SMA)))

df['TAZ'] = np.where(cond, 100, 0)

推荐阅读