如何测试现有数据框的条件并将结果放在新列上?
How to test a condition on existing dataframe and put the results on a new column?
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”。
虽然代码按照我的要求工作,但我无法将结果放在单独的列中。不胜感激!
您可以这样使用 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)
您只需使用您的代码输出创建一个新列 TAZ
。通过将结果乘以 100,如果满足条件,您将得到 100,否则将为 0。如果您喜欢它作为字符串,您可以使用 astype()
进行转换
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
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”。
虽然代码按照我的要求工作,但我无法将结果放在单独的列中。不胜感激!
您可以这样使用 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)
您只需使用您的代码输出创建一个新列 TAZ
。通过将结果乘以 100,如果满足条件,您将得到 100,否则将为 0。如果您喜欢它作为字符串,您可以使用 astype()
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