首页 > 解决方案 > 如果其中的值小于前一个,则迭代熊猫数据框并删除行

问题描述

我有一个包含频率、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

你能帮忙吗?谢谢你。

标签: pythonpandas

解决方案


用于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

推荐阅读