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