我有以下数据框:
N1 N2 CONNECT ...卡姆·保罗·佩德罗·威尔·罗伊·艾米
彼得卡姆 1 ... NaN NaN NaN NaN NAN NAN
罗伊艾米 0 ... NaN NaN NaN NaN NAN NAN
威尔·佩德罗 1 ... NaN NaN NaN NaN NAN NAN
列中的所有列名称与列 N1 和 N2 中包含的名称相同(就像透视一样) 如果列 CONNNECT 有 1 或 0,如果列 CONNECT 在与 N1 或 N2 名称相同的列上有 0,我想添加 1。
这段代码实现了我想要的功能,但仅适用于一列,并且我希望它发生在具有人员名称的所有列上:
df4['Alice']=np.where(df4.N1.str.contains(r'Alice',na=True) | df4.N2.str.contains(r'Alice',na=True),1, 0)
我期待:
N1 N2 CONNECT ...卡姆·保罗·佩德罗·威尔·罗伊·艾米
保罗·卡姆 1 ... 1 1 0 0 0 0
罗伊·艾米 0 ... 0 0 0 0 0 0
佩德罗 1 ... 0 0 1 1 0 0
#names 是一个包含名称的数组
对于名称中的 j: df4[j]=np.where(df4.N1.str.contains(j,na=True) | \ df4.N2.str.contains(j,na=True),1,0)