如果现有变量位于数据框中的两个值之间,则创建等于 1 的新变量
Creating new variable that equals to 1 if the existing variable lies between two values in dataframe
这是我的数据框。
如果我的 'Y' 变量介于上面数据框中的两个值(UP,DOWN)之间,我想创建一个等于 1 的新变量。
然而我已经尝试了很多代码,没有令人满意的结果。
这些是我试过的代码;
第一个:
A['DM'] = ((A.Y >A['UP']) & (A.Y <A['DOWN'])).astype(int)
第二个:A['DM']=1 if [(A['Y'] > A['DOWN']) & (A['Y'] < A['UP'])]
np.where() 是要走的路:
import numpy as np
A[‘DM’] = np.where(((A[‘Y’] > A[‘up’]) & (A[‘Y’] < A[‘down’])) | ((A[‘Y’] < A[‘up’]) & (A[‘Y’] > A[‘down’])), 1, 0)
应该可以了。希望没有错别字,因为我是在手机上回复的。
这样试试:
import pandas as pd
import numpy as np
A["DM"]=np.where((A.Y>A.up) & (A.Y<A.down),1,0)
你需要像 np.where 这样的东西来逻辑比较 2 个类似对象的数组 - 否则你需要明智地做那个元素。
这是我的数据框。
如果我的 'Y' 变量介于上面数据框中的两个值(UP,DOWN)之间,我想创建一个等于 1 的新变量。
然而我已经尝试了很多代码,没有令人满意的结果。 这些是我试过的代码;
第一个:
A['DM'] = ((A.Y >A['UP']) & (A.Y <A['DOWN'])).astype(int)
第二个:A['DM']=1 if [(A['Y'] > A['DOWN']) & (A['Y'] < A['UP'])]
np.where() 是要走的路:
import numpy as np
A[‘DM’] = np.where(((A[‘Y’] > A[‘up’]) & (A[‘Y’] < A[‘down’])) | ((A[‘Y’] < A[‘up’]) & (A[‘Y’] > A[‘down’])), 1, 0)
应该可以了。希望没有错别字,因为我是在手机上回复的。
这样试试:
import pandas as pd
import numpy as np
A["DM"]=np.where((A.Y>A.up) & (A.Y<A.down),1,0)
你需要像 np.where 这样的东西来逻辑比较 2 个类似对象的数组 - 否则你需要明智地做那个元素。