python-3.x - 选择每个特定数量的列的行,其中值为负数,并在 python3 的另一列中转换值 0
问题描述
我有以下数据框
date B C D E
2019-07-01 00:00 0.400157 0.978738 2.240893 1.867558
2019-07-01 00:10 -0.950088 0.151357 -0.103219 0.410599
2019-07-01 00:20 1.454274 0.761038 0.121675 0.443863
2019-07-01 00:30 -1.494079 0.205158 0.313068 0.854096
假设行的每个偶数列都包含 -ve 值(可能是多个条件,例如行包含 -ve 值或超过 10),那么我想将下一个奇数列值变为 0
预期产出
date B C D E
2019-07-01 00:00 0.400157 0.978738 2.240893 1.867558
2019-07-01 00:10 -0.950088 0 -0.103219 0
2019-07-01 00:20 1.454274 0.761038 0.121675 0.443863
2019-07-01 00:30 -1.494079 0 0.313068 0.854096
如果代码一个班轮解决方案是最好的,或者我们可以为此编写函数
解决方案
此解决方案要求将date
列设置为索引:
df.set_index('date', inplace=True)
df[df.shift(axis=1) < 0] = 0
df.reset_index(inplace=True)
df.shift
返回一个新的数据框,所有列都向右移动(默认行为;可以使用periods
参数更改)。这使您可以将一个单元格与其左侧的一个单元格进行比较。
推荐阅读
- python - Pandas 数据框 .dropna() 没有丢弃 NaN 值
- vue.js - 从子组件调用方法
- javascript - array.push 似乎替换了以前的对象而不是追加
- javascript - 使用过滤器功能从另一个对象创建对象
- angular - 如何防止 Angular 服务人员缓存 PDF 文件?
- php - Wordpress Index.php 博客文章
- java - jaxb2-maven-plugin:无法从 WSDL 生成源
- node.js - 第一个alexa技能
- java - 在两个 ActiveMQ 队列之间配置 Apache Camel 路由,以使用特定目标队列的生产者而不是身份不明的生产者
- android - 使用 BaseAdapter 和 ViewHolder 的空指针异常