【问题标题】:Apply a threshold on a Pandas DataFrame column在 Pandas DataFrame 列上应用阈值
【发布时间】:2016-06-15 05:36:07
【问题描述】:

我有一个像这样的 Daframe

In [52]: f
Out[52]:
Date
2015-02-23 12:00:00    0.172517
2015-02-23 13:00:00    0.172414
2015-02-23 14:00:00    0.172516
2015-02-23 15:00:00    0.173261
2015-02-23 16:00:00    0.172921
2015-02-23 17:00:00    0.172371
2015-02-23 18:00:00    0.176374
2015-02-23 19:00:00    0.177480
    ...

我想对系列应用一个阈值,这样值就会低于它,我只需将阈值的值替换为实际值。

我正在尝试定义一个布尔数据框,例如

布尔 = f > 阈值

但我不确定如何继续。提前致谢。

【问题讨论】:

    标签: python pandas boolean time-series


    【解决方案1】:

    IIUC 那么以下应该可以工作:

    f[f> Threshold] = some_val
    

    或者你可以使用clip_upper:

    f = f.clip_upper(Threshold)
    

    这会将上限限制为您的阈值

    In [147]:
    df[df['val'] > 0.175] = 0.175
    df
    
    Out[147]:
                              val
    Date                         
    2015-02-23 12:00:00  0.172517
    2015-02-23 13:00:00  0.172414
    2015-02-23 14:00:00  0.172516
    2015-02-23 15:00:00  0.173261
    2015-02-23 16:00:00  0.172921
    2015-02-23 17:00:00  0.172371
    2015-02-23 18:00:00  0.175000
    2015-02-23 19:00:00  0.175000
    
    In [149]:    
    df['val'].clip_upper(0.175)
    
    Out[149]:
    Date
    2015-02-23 12:00:00    0.172517
    2015-02-23 13:00:00    0.172414
    2015-02-23 14:00:00    0.172516
    2015-02-23 15:00:00    0.173261
    2015-02-23 16:00:00    0.172921
    2015-02-23 17:00:00    0.172371
    2015-02-23 18:00:00    0.175000
    2015-02-23 19:00:00    0.175000
    Name: val, dtype: float64
    

    【讨论】:

    • 如果您的 DataFrame 中有多个列,这将覆盖所有列。所以在那种情况下,我想你会想做df['val'][df['val'] > 0.175] = 0.175。尽管您可能还希望将其分成两行,以便以后更容易观察。
    • 更新了剪辑方法文档的链接:pandas.pydata.org/pandas-docs/stable/reference/api/….
    猜你喜欢
    • 2018-06-08
    • 1970-01-01
    • 2020-06-15
    • 2017-04-29
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多