如果现有变量位于数据框中的两个值之间,则创建等于 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 个类似对象的数组 - 否则你需要明智地做那个元素。