python - 如果其中的值小于前一个,则迭代熊猫数据框并删除行
问题描述
我有一个包含频率、SNR 和时间标签的数据框。我的机器出现问题,有时频率会倒退而不是前进,我已经根据时间对数据帧进行了排序,但现在我想遍历行并删除频率为的行低于上一个。
这是我的数据框的一部分(整个数据框大约有 3700 行):
freq snr time_tag
128 395.400902 115.737681 652492975
118 395.385596 115.709449 652492976
134 395.415043 115.858103 652492978
137 395.427460 115.805077 652492979
133 395.413911 115.870729 652492980
你能帮忙吗?谢谢你。
解决方案
用于shift
将当前行与上一行进行比较:
>>> df[~df['freq'].lt(df['freq'].shift())]
freq snr time_tag
128 395.400902 115.737681 652492975
134 395.415043 115.858103 652492978
137 395.427460 115.805077 652492979
或者,@mozway 建议:
>>> df[df['freq'].ge(df['freq'].shift(fill_value=0))]
freq snr time_tag
128 395.400902 115.737681 652492975
134 395.415043 115.858103 652492978
137 395.427460 115.805077 652492979
推荐阅读
- assembly - L2 行填充是否总是在查找时触发?
- c++ - 如何配置 LLDB 以跳过 std::function 实现细节?
- javascript - 控制台中的角度对象输出“未定义”。无法将数据输入前端
- regex - 正则表达式搜索小数点后的数字
- reactjs - 对于使用 CORS 的 create-react-app 构建的 React 应用程序,如何将 localhost:3000 更改为“custom.domain.dev”
- python - 在 for 循环中分配变量名称
- nlp - 如何检查子动词 obj 三元组的真实性?
- angular - 如何以编程方式扩展primeng树表
- angular - Angular Material多对象拖放与调整大小问题
- docker-compose - 使用网格和 DNSRR 的 Docker 群网络延迟