从这个question开始,我有一个这样的数据集:
ChildID MotherID preDiabetes
0 20 455 No
1 20 455 Not documented
2 13 102 NaN
3 13 102 Yes
4 702 946 No
5 82 571 No
6 82 571 Yes
7 82 571 Not documented
8 60 530 NaN
我将其转换为以下内容,以便每位母亲对糖尿病前期有一个单一的值:
ChildID MotherID preDiabetes
0 20 455 No
1 13 102 Yes
2 702 946 No
3 82 571 Yes
4 60 530 No
我通过应用以下逻辑实现了这一点:
然而,在再次思考这一点之后,我意识到我应该保留NaN值,以便稍后对其进行插补,而不仅仅是将其指定为“否”。 因此,我应该将我的逻辑编辑为:
因此,在上表中,MotherID=530的值应为NaN,如:
ChildID MotherID preDiabetes
0 20 455 No
1 13 102 Yes
2 702 946 No
3 82 571 Yes
4 60 530 NaN
我尝试使用以下代码行执行此操作:
df=df.groupby(['MotherID', 'ChildID'])['preDiabetes'].apply(
lambda x: 'Yes' if 'Yes' in x.values else (np.NaN if np.NaN in x.values.all() else 'No'))
但是,运行这行代码会导致以下错误:
TypeError:'in'需要字符串作为左操作数,而不是浮点运算
如果你们能指出我做错了什么,我将不胜感激。谢谢
您可以尝试:
结果:
您可以使用自定义函数执行以下操作:
尝试:
第一行将
preDiabetes
格式化为数字,假设NaN
是除Yes
或No
(由-1
表示)之外的所有内容第二行假设至少有一个
preDiabetes
是Yes
-我们为组输出Yes
。假设我们有No
和NaN
,我们输出No
。假设所有的都是NaN
,我们输出NaN
产出:
相关问题 更多 >
编程相关推荐