Python:根据其他列中存在的值替换多个列值
Python: replace multiple column values based on values present in other columns
早上好。
我正在尝试根据其他列中存在的值替换多个列值。我可以在 R 中执行此操作,但我不明白如何使用 python 执行相同的操作。我尝试使用 np.where() 和 df.loc 方法,但它只允许我处理单列。数据是一次热编码的结果,因此数据帧包含 id,但代码列只是 0 和 1。由于这个数据是一个热编码的,我们可以有很多代码列,但唯一需要替换的是 code3 和 code4
示例输入
id
code1
code3
code4
code 5
code..n
ABC
1
1
1
1
1
CDE
0
1
1
0
1
EFG
1
0
1
0
1
我想完成以下任务
每行如果除code3和code4之外的任何其他列中都有任何1,则将code3和code4列中的1替换为0
示例输出
id
code1
code3
code4
code 5
code..n
ABC
1
0
0
1
1
CDE
0
0
0
0
1
EFG
1
0
0
0
1
谢谢
您可以使用布尔索引:
c = ['code3', 'code4']
df.loc[df.drop(c, axis=1).eq(1).any(1), c] = 0
id code1 code3 code4 code 5 code..n
0 ABC 1 0 0 1 1
1 CDE 0 0 0 0 1
2 EFG 1 0 0 0 1
早上好。
我正在尝试根据其他列中存在的值替换多个列值。我可以在 R 中执行此操作,但我不明白如何使用 python 执行相同的操作。我尝试使用 np.where() 和 df.loc 方法,但它只允许我处理单列。数据是一次热编码的结果,因此数据帧包含 id,但代码列只是 0 和 1。由于这个数据是一个热编码的,我们可以有很多代码列,但唯一需要替换的是 code3 和 code4
示例输入
id | code1 | code3 | code4 | code 5 | code..n |
---|---|---|---|---|---|
ABC | 1 | 1 | 1 | 1 | 1 |
CDE | 0 | 1 | 1 | 0 | 1 |
EFG | 1 | 0 | 1 | 0 | 1 |
我想完成以下任务
每行如果除code3和code4之外的任何其他列中都有任何1,则将code3和code4列中的1替换为0
示例输出
id | code1 | code3 | code4 | code 5 | code..n |
---|---|---|---|---|---|
ABC | 1 | 0 | 0 | 1 | 1 |
CDE | 0 | 0 | 0 | 0 | 1 |
EFG | 1 | 0 | 0 | 0 | 1 |
谢谢
您可以使用布尔索引:
c = ['code3', 'code4']
df.loc[df.drop(c, axis=1).eq(1).any(1), c] = 0
id code1 code3 code4 code 5 code..n
0 ABC 1 0 0 1 1
1 CDE 0 0 0 0 1
2 EFG 1 0 0 0 1