我正在使用熊猫处理一些家庭调查数据。我通常需要创建一个新列,其中包含其他一些特定家庭成员的信息。
具体来说,这是数据看起来像的最小示例:
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])
由于我需要经常进行这种操作,因此有时数据可能很大。我希望有人可以向我展示一种有效的方法。
谢谢!