Pandas 如何在现有数据帧上测试条件并将结果放在新列上?

Pandas 如何在现有数据帧上测试条件并将结果放在新列上?,pandas,dataframe,data-science,data-analysis,Pandas,Dataframe,Data Science,Data Analysis,我想测试以下代码 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

我想测试以下代码

      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.EMA))
|((df.Close>=df.EMA)&(df.Open=df.SMA)&(df.Close您可以这样使用:

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)))]
#过滤条件

cond=(df.SMA>=df.EMA)和((df.Open=df.EMA))|((df.Close>=df.EMA)和(df.Open=df.SMA)和(df.Close您只需使用代码的输出创建一个新列
TAZ
。如果满足条件,则将结果乘以100,否则将为0。如果您希望将其作为字符串,则可以使用
astype()

df['TAZ']=((df.SMA>=df.EMA)和((df.Open=df.EMA))|((df.Close>=df.EMA)和(df.Open=df.SMA)和(df.Close)
# 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)
df['TAZ'] = ((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)))) * 100