python - 如何根据其他列中的多个条件更新列数据?
问题描述
我有一个数据框:
Color Name Age City Value
Blue Bob 28 Atl 0
Green Bob 27 Chi 0
Blue Sam 28 Atl 0
我有上述 DF,如果颜色为蓝色、年龄为 28 岁且城市为 Atl,我希望所有值都等于 1。
我尝试使用 df.loc,但出现“索引器太多”的错误
解决方案
对于这些问题,我通常默认为np.select
,这样我可以创建复杂的条件,并以清晰和可扩展的方式设置输出。
首先,创建您的条件(根据需要创建尽可能多的条件):
p1 = df.Color.eq('Blue')
p2 = df.Age.eq(28)
p3 = df.City.eq('Atl')
condition = p1 & p2 & p3
现在使用numpy.select
,传递您的条件列表、匹配输出列表和默认值:
df.assign(Value=np.select([condition], [1], df.Value))
Color Name Age City Value
0 Blue Bob 28 Atl 1
1 Green Bob 27 Chi 0
2 Blue Sam 28 Atl 1
如果你真的只有一个条件,你也可以numpy.where
在这里使用:
np.where(condition, 1, df.Value)
# array([1, 0, 1], dtype=int64)
推荐阅读
- java - 如何在 JUnit 5 中测试队列?
- windows - 在 Windows 中,NT Authority/System 能否以另一个用户身份运行 powershell 脚本
- python - 如何在pyside中使用Material Style?
- windows - winAPI ScrollWindow 会影响 GetClientRect() 吗?
- github - 有没有办法在 github README.org (org-mode) 中显示可折叠的内容?
- apache2 - 在 Apache 中计算 mpm_event.conf 值的最佳实践是什么?
- spring-integration - Spring Integration DSL 将一个对象转换为另一个
- javascript - javascript自动验证在php文件中不起作用
- shell - conda env 名称破坏了 oh-my-zsh 格式
- apache-spark - 基于列表标记数据框行