Python 将自定义函数应用于数据帧

Python 将自定义函数应用于数据帧,python,pandas,lambda,data-science,apply,Python,Pandas,Lambda,Data Science,Apply,我为一个问题挣扎了一段时间。实际上,我想在我的数据帧中创建一个新列,当3列的值低于某个范围时,该列将为0,当值超过阈值时,该列将为1。我正在附上我的数据头的图像。在我的数据中,如果Ir、Iy和Ib的值高于4,则为1,否则为0。 提前谢谢 试试这个: import numpy as np df['new_col'] = np.where(((df['lr'] > 4) & (df['ly'] > 4) & (df['lb'] > 4)), 1, 0) 下面是一

我为一个问题挣扎了一段时间。实际上,我想在我的数据帧中创建一个新列,当3列的值低于某个范围时,该列将为0,当值超过阈值时,该列将为1。我正在附上我的数据头的图像。在我的数据中,如果Ir、Iy和Ib的值高于4,则为1,否则为0。 提前谢谢

试试这个:

import numpy as np

df['new_col'] = np.where(((df['lr'] > 4) & (df['ly'] > 4) & (df['lb'] > 4)), 1, 0)

下面是一个这样做的示例: 如果lr>0.5,ly>0.4,lb>0.3

import random
import pandas as pd
data = {'lr': [],
        'ly': [],
        'lb': []
       }

for i in range(20):
    r = random.random()
    y = random.random()
    b = random.random()
    data['lr'].append(r)
    data['ly'].append(y)
    data['lb'].append(b)

data

df = pd.DataFrame(data)
df['new_column'] = 0

filt = (df['lr'] > 0.5) & (df['ly'] > 0.4) & (df['lb'] > 0.3)

df.loc[filt, 'new_column'] = 1
df

添加一点数据(不是图像格式)并写入所需的输出。欢迎使用SO!请阅读我如何提出一个好问题?为什么不
np.where(df[[lr',ly',lb']].gt(4).all(axis=1),1,0)
?或者干脆:
df[[lr',ly',lb']].gt(4).all(axis=1).astype(int)