Python 在数据帧的多个观测功能中使用lambda替换大于限制的值

Python 在数据帧的多个观测功能中使用lambda替换大于限制的值,python,pandas,Python,Pandas,类似于,我有一个特性“预加权”,它对每个MotherID有多个观察值,我想将其转换为dataframe到一个新的datframe,其中 如果某个特定的MotherID的预加权>=4000,则我将预加权值指定为“是”,而不考虑剩余的观察值 否则,如果preWeight为请尝试使用pandas.DataFrame.any: df.groupby(['ChildID','MotherID']).agg(lambda x: 'Yes' if (x>4000).any() else 'No').r

类似于,我有一个特性“预加权”,它对每个MotherID有多个观察值,我想将其转换为dataframe到一个新的datframe,其中

  • 如果某个特定的MotherID的预加权>=4000,则我将预加权值指定为“是”,而不考虑剩余的观察值

  • 否则,如果preWeight为请尝试使用
    pandas.DataFrame.any

    df.groupby(['ChildID','MotherID']).agg(lambda x: 'Yes' if (x>4000).any() else 'No').reset_index()
    
    输出:

       ChildID  MotherID preWeight
    0       13       102        No
    1       20       455       Yes
    2       82       571        No
    3      702       946       Yes
    

    使用
    pandas.DataFrame.any尝试此操作:

    df.groupby(['ChildID','MotherID']).agg(lambda x: 'Yes' if (x>4000).any() else 'No').reset_index()
    
    输出:

       ChildID  MotherID preWeight
    0       13       102        No
    1       20       455       Yes
    2       82       571        No
    3      702       946       Yes
    

    如果同一
    ChildID
    MotherID
    preWeight
    分别低于4000和高于4000,那么
    preWeight
    应该有什么值?如果
    preWeight
    分别低于4000和高于4000,那么
    ChildID
    应该有什么值
    MotherID
    ?我认为您的答案缺少预加权,所以应该是:df.groupby(['ChildID','MotherID'])['preWeight'].agg(lambda x:'Yes'if(x>4000)。any()else'No')。reset_index()还有,为什么您在这里使用agg函数不适用,有什么区别?这没关系,因为有三列,当我按,索引成为前两列,因此,在本例中指定要修改的列并不重要,因为它只剩下一列@sums22是agg和apply的区别。但在这种情况下,没有具体的原因。另外,如果有帮助的话,考虑一下,谢谢:Sums22我认为你的答案缺少预加权,所以应该是:df.groupby(['ChildID','MotherID'])['preWeight'].agg(lambda x:'Yes'if(x>4000)。any()其他的'No')。reset_index()还有,为什么你在这里使用agg函数不适用,有什么区别?这没关系,因为有三列,当我按,索引成为前两列,因此,在本例中指定要修改的列并不重要,因为它只剩下一列@sums22是agg和apply的区别。但在这种情况下,没有具体的原因。另外,如果有帮助的话,考虑一下,谢谢:sums22
    df.groupby(['ChildID','MotherID']).agg(lambda x: 'Yes' if (x>4000).any() else 'No').reset_index()
    
       ChildID  MotherID preWeight
    0       13       102        No
    1       20       455       Yes
    2       82       571        No
    3      702       946       Yes