python - 如何根据条件在熊猫数据框的多列上分配值
问题描述
我有一个 dtaframe df 如下
df = pd.DataFrame({
'A': [20,30,40,-50,60,-70 ],
'B': [21, -19, 20, 18, 17, -21],
'C': [1,12,-13,14,15,16],
'D': [-88, 92, 9, 70, -6, 78]})
我希望列 ['C','D'] 上的每个值都为零,其中值介于 -10 和 10 之间,其余值应保持不变。
有没有类似的东西data.series.between
,可以应用于数据框
df[(df[['C','D']].between(-10,10,inclusive=True)]=0
输出应该是:
A B C D
0 20 21 0 -88
1 30 -19 12 92
2 40 20 -13 0
3 -50 18 14 70
4 60 17 15 0
5 -70 -21 16 78
解决方案
通过and比较后,您可以df.mask()
在此处使用:df.ge
df.le
df[['C','D']]=df[['C','D']].mask(df[['C','D']].ge(-10)&df[['C','D']].le(10),0)
或者np.where()
:
df[['C','D']]=np.where(df[['C','D']].ge(-10)&df[['C','D']].le(10),0,df[['C','D']])
A B C D
0 20 21 0 -88
1 30 -19 12 92
2 40 20 -13 0
3 -50 18 14 70
4 60 17 15 0
5 -70 -21 16 78
推荐阅读
- java - Apache Common IO FileItemIterator 不返回任何下一个值
- haskell - 堆中充满了 PINNED
- linux - 在启动时运行多个 npm 脚本
- google-benchmark - 谷歌基准不写入输出文件
- c# - 如何在.Net Core 3.1中创建的WCF服务中读取/解析soap标头请求
- java - 休息模板不维持秩序
- r - 为 spatstat 中空间变化的相对风险的非参数估计指定自定义权重
- kubernetes - `cert-manager` 无法创建测试颁发者,并且 `context deadlyed`
- python - conda 导出后 conda 将 git url 替换为 yml 文件中的包名
- c# - 调用 WinForm 没有获得焦点