gpt4 book ai didi

python - Pandas - 如果特定列的值为 1,则用 0 替换行中的其他列

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:51 24 4
gpt4 key购买 nike

这是一个示例数据框:

X Y Z 
1 0 1
0 1 0
1 1 1

现在,这是我想出的规则:

  • X 保持原样
  • 如果 Y 等于 1,则将 X 中的相应值设置为 0
  • 如果Z等于1则将X和Y中对应的值设置为0

最终的数据框应该是这样的:

X Y Z 
0 0 1
0 1 0
0 0 1

我对解决方案的第一个想法是:

df_null_list = ['X']

for i in ['Y', 'Z']:

df[df[i] == 1][df_null_list] = 0

df_null_list.append(i)

当我这样做并在 y 轴上求和时,我开始得到没有意义的值 2 和 4。请注意,我指的是我在实际数据集上运行它的时间。

您有任何改进建议或替代解决方案吗?

最佳答案

使用mask :

df['X'] = df['X'].mask(df.Y == 1, 0)
df[['X', 'Y']] = df[['X', 'Y']].mask(df.Z == 1, 0)

另一种解决方案 DataFrame.loc :

df.loc[df.Y == 1, 'X'] = 0
df.loc[df.Z == 1, ['X', 'Y']] = 0

print (df)
X Y Z
0 0 0 1
1 0 1 0
2 0 0 1

关于python - Pandas - 如果特定列的值为 1,则用 0 替换行中的其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53142660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com