Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas-Dataframe-Python中多观测特征到单观测特征的转换_Python_Pandas - Fatal编程技术网

Pandas-Dataframe-Python中多观测特征到单观测特征的转换

Pandas-Dataframe-Python中多观测特征到单观测特征的转换,python,pandas,Python,Pandas,我有一个数据框,其中包含列(预索引)的母亲ID和多个观察值,如下所示: 我想将多个观测特征(预糖尿病)转换为每个母亲ID具有单个观测的特征 为此,我将创建一个新的数据帧,该数据帧具有以下功能: 如果某个特定的MotherID的preDiabetes==“Yes”,则为newPreDiabetes指定一个值“Yes”,而不管剩余的观察结果如何 。否则,如果糖尿病前期!=“是”对于特定的MotherID,我将为newPreDiabetes指定一个值“否” 因此,我的新数据帧将对特征预糖尿病和唯一

我有一个数据框,其中包含列(预索引)的母亲ID和多个观察值,如下所示:

我想将多个观测特征(预糖尿病)转换为每个母亲ID具有单个观测的特征

为此,我将创建一个新的数据帧,该数据帧具有以下功能:

  • 如果某个特定的MotherID的preDiabetes==“Yes”,则为newPreDiabetes指定一个值“Yes”,而不管剩余的观察结果如何
  • 。否则,如果糖尿病前期!=“是”对于特定的MotherID,我将为newPreDiabetes指定一个值“否”
因此,我的新数据帧将对特征预糖尿病和唯一的母亲ID进行单一观察,例如:

    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
    ChildID   MotherID   newPreDiabetes
0   20        455        No
1   13        102        Yes
2   702       946        No
3   82        571        Yes
我不熟悉Python和Pandas,因此我不确定实现这一点的最佳方法是什么,但这是我迄今为止尝试过的:


#获取所有唯一母亲ID的列表
uniqueMotherIds=pd.unique(df['MotherID']].values.ravel())
#创建新的数据帧,该数据帧将包含唯一的motherID和newPreDiabetes的单个观察值
newDf={'MotherID','newPreDiabetes'}
#遍历所有母亲ID的列表并查找预糖尿病==“是”
对于UniqueMotherID中的id:
filteredDf=df[df['MotherID']==id]。预糖尿病==“是”
结果=pd.concat([filteredDf,newDf])
代码还没有完成,我将感谢一些帮助,因为我不知道我是否在正确的轨道上

非常感谢:)

输出:


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

行了,谢谢!我有另一个列(ChildID),我没有在上面的MWE中包含它,我如何将它作为输出的一部分包含在操作它中呢?

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