Python 在数据帧的多个观测功能中使用lambda替换大于限制的值
类似于,我有一个特性“预加权”,它对每个MotherID有多个观察值,我想将其转换为dataframe到一个新的datframe,其中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的预加权>=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
分别低于4000和高于4000,那么preWeight
应该有什么值?如果preWeight
分别低于4000和高于4000,那么preWeight
应该有什么值ChildID
?我认为您的答案缺少预加权,所以应该是: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的区别。但在这种情况下,没有具体的原因。另外,如果有帮助的话,考虑一下,谢谢:sums22MotherID
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