一种有效的方法,可基于同一组中另一行和另一列中的某个值来分配值

时间:2019-02-10 20:31:37

标签: python pandas

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

具体来说,这是数据看起来像的最小示例:

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是住户编号; pid是家庭中的个人身份证件; edu是有关人pid的一些信息。

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

如果该行的edu等于1,并显示住户pid,我想生成一个新列来显示pid为2的住户成员edu如果该行的pid等于2,则成员pid等于2。如果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])

由于我需要经常进行这种操作,因此有时数据可能很大。我希望有人可以向我展示一种有效的方法。

谢谢!

0 个答案:

没有答案