【问题标题】:Remove particular value from pandas dataframe which do not fit the sequence从不符合序列的熊猫数据框中删除特定值
【发布时间】:2018-12-20 11:47:44
【问题描述】:

我有一个包含时间序列列的数据框: 除了少数垃圾值外,它们遵循特定的顺序 我希望根据时间列删除行。正如所见,1276.400 不适合序列,因此需要删除整行。 我知道如何根据条件删除 pandas 行,但无法针对这个特定问题提出解决方案

.......
    583.19732
    583.397583
    583.5975952
    1276.400146
    583.7976074
    583.9976196
    584.1975708
    584.396123
    584.597834
    ........

【问题讨论】:

    标签: python python-3.x python-2.7 pandas numpy


    【解决方案1】:

    您需要选择一些逻辑来确定您认为的异常值。我们对此无能为力。您最了解自己的数据。

    一种选择是使用pd.Series.quantile。这使您可以灵活地定义误差范围。另一方面,它确实专门查看相邻值。

    df_filtered = df[df['col'] < df['col'].quantile(0.90)]
    
    print(df_filtered)
    
              col
    0  583.197320
    1  583.397583
    2  583.597595
    4  583.797607
    5  583.997620
    6  584.197571
    7  584.396123
    8  584.597834
    

    【讨论】:

    • @jpp 你能详细说明什么是分位数以及如何选择 0.90.. 这对我来说是新的
    • 分位数是表示概率分布的数学术语,请参阅en.wikipedia.org/wiki/Quantile。 90% 是用户输入;正如我所说,需要指定适合您的数据的内容。
    • 好的,如何选择 0.90
    • @Poka,这是一个用户输入。我凭空挑选了一个数字来提供输出。 应该选择一个适合您的数据和需求的数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2018-11-11
    • 2018-02-02
    相关资源
    最近更新 更多