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是的,正是这种情况