Python 如何标记或标记数据帧的实例,而不是删除它们?

Python 如何标记或标记数据帧的实例,而不是删除它们?,python,python-3.x,pandas,numpy,Python,Python 3.x,Pandas,Numpy,我正在执行一些操作以删除矩阵的某些元素: df[df.apply(lambda x: np.abs(x - x.std()) / x.mean() < 5).all(axis=1)] df[df.apply(λx:np.abs(x-x.std())/x.mean()

我正在执行一些操作以删除矩阵的某些元素:

df[df.apply(lambda x: np.abs(x - x.std()) / x.mean() < 5).all(axis=1)]
df[df.apply(λx:np.abs(x-x.std())/x.mean()<5)。全部(轴=1)]
上述代码的问题在于,它正在删除与lambda函数不匹配的元素。如何用
True
False
标记它们,而不是将它们从数据帧中删除?

选项1 您可以根据条件将True或False分配给数据帧中的所有单元格:

df[df.apply(lambda x: np.abs(x - x.std()) / x.mean() < 5).all(axis=1)]= True 
df[~df.apply(lambda x: np.abs(x - x.std()) / x.mean() < 5).all(axis=1)]= False

或者使用df.assign和np.where,如下所示:

df.assign(label=np.where(df.apply(
       lambda x: np.abs(x - x.std()) / x.mean() < 5).all(axis=1), 
       True, False))
df.assign(label=np.where(df.apply(
λx:np.abs(x-x.std())/x.mean()<5.all(轴=1),
对,错)

标记或标记每行中的所有元素?是,标记它们@Divakar考虑添加一个示例案例。@Divakar这里有一些示例数据,表示最小的示例和预期输出:)@tumbleweed您可以共享一个示例数据框吗?@tumbleweed检查选项3和np。where@tumbleweed我猜是因为混合型。。我不确定,正确值和错误值对应于哪个?。。。我想我是糊涂了?@风滚草True适用于条件为True的任何行,False适用于其他行。。
df['label'] = True 
df[~df.apply(
     lambda x: np.abs(x - x.std()) / x.mean() < 5
   ).all(axis=1)]['label']= False
df['label'] = np.where(df.apply(
       lambda x: np.abs(x - x.std()) / x.mean() < 5).all(axis=1), 
       True, False)
df.assign(label=np.where(df.apply(
       lambda x: np.abs(x - x.std()) / x.mean() < 5).all(axis=1), 
       True, False))