一种基于同一组中另一行和另一列的某个值进行赋值的有效方法

2024-09-23 22:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一些使用熊猫的家庭调查数据。这是一个常见的任务,我需要创建一个新的列,其中包含一些其他特定家庭成员的信息

具体来说,这里有一个数据可能是什么样的最小示例:

df=pd.DataFrame({'hhid':[1,1,1,2,2,3,3,3,3],
                 'pid':[1,2,3,1,2,1,3,5,6],
                 'edu':[4,2,3,4,5,3,4,6,3]})

hhid是家庭idpid是家庭内部的个人id; edu是关于这个人的一些信息pid

我需要做的这类事情的一个例子如下:

我想生成一个新列,如果此行的pid等于1,则显示家庭成员的edu,如果此行的pid等于2,则显示家庭成员的edu,如果此行的pid等于2,则显示家庭成员的pid。如果pid既不是1也不是2,则该值取NaN(因此,这可以想象为一个列,与配偶的教育水平。)

注意,可能不是每个hhid都与1或2的pid匹配。(hhid=3给出了一个没有pid=2的例子。)这个人工例子的输出应该是

df=pd.DataFrame({'hhid':[1,1,1,2,2,3,3,3,3],
                 'pid':[1,2,3,1,2,1,3,5,6],
                 'edu':[4,2,3,4,5,3,4,6,3]},
                 'sp_edu':[2,4,NAN,5,4,NAN,NAN,NAN,NAN])

因为我需要经常做这种操作,有时数据会很大。我希望有人能告诉我一个有效的方法

谢谢你


Tags: 数据信息id示例dataframedf家庭nan