如何根据两列或更多列的值更新不同列的标志?

问题描述 投票:0回答:1

我有以下数据框:

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

multiple-columns flags
1个回答
0
投票

#names 是一个包含名称的数组

对于名称中的 j: df4[j]=np.where(df4.N1.str.contains(j,na=True) | \ df4.N2.str.contains(j,na=True),1,0)

© www.soinside.com 2019 - 2024. All rights reserved.