Python 根据其他两列的值,在pandas中创建一个新列

Python 根据其他两列的值,在pandas中创建一个新列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据示例: datetime column1. column2 2020-01-01. 5. [0,0,0,1] 2020-01-02. 4. [0,0,0,0] 2020-01-03. 10. [1,1,1,0] 2020-01-04. 2. [1,1,1,1] 我需要一个名为action的新列,该列假设:如果column1的值低于3而高于5,则为1,否则为df.column2.any(axis=1)值 示例输

我有一个数据示例:

datetime    column1.   column2 
2020-01-01.   5.       [0,0,0,1]
2020-01-02.   4.       [0,0,0,0]
2020-01-03.   10.      [1,1,1,0]
2020-01-04.   2.       [1,1,1,1]
我需要一个名为action的新列,该列假设:如果column1的值低于3而高于5,则为1,否则为df.column2.any(axis=1)值

示例输出应如下所示:

datetime    column1.   column2    action
2020-01-01.   5.       [0,0,0,1].  1
2020-01-02.   2.       [0,0,0,0].  1
2020-01-03.   10.      [1,1,1,0].  1
2020-01-04.   4.       [0,0,0,0]   0
与任何一起使用:

df['action'] = np.where(df.column1.between(3,5), df.column2.apply(any), 1)
print (df)
     datetime  column1       column2  action
0  2020-01-01        5  [0, 0, 0, 1]       1
1  2020-01-02        2  [0, 0, 0, 0]       1
2  2020-01-03       10  [1, 1, 1, 0]       1
3  2020-01-04        4  [0, 0, 0, 0]       0

我不确定一个值如何低于3而高于5,但您应该尝试使用值为4的列1,它应该返回一个0而不是0的操作1@StackUser-soory,我更改了数据,请稍等。我的意思是,如果值低于3且高于5,则应返回1,但4在两个值之间,因此应返回df.column2.apply(任意)这是0.3以下。这意味着像2这样的值,那么action应该返回1是的,正是这种情况