在Pandas DataFrame列上应用阈值

Duc*_*ani 4 python boolean time-series pandas

我有一个看起来像这样的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
    ...
Run Code Online (Sandbox Code Playgroud)

并且我想对该系列应用一个阈值,以便值低于它我只是将阈值的值替换为实际值.

我试图definte一个布尔数据帧,如

Bool = f>阈值

但我不知道该怎么做.提前致谢.

EdC*_*ica 8

IIUC然后以下应该工作:

f[f> Threshold] = some_val
Run Code Online (Sandbox Code Playgroud)

或者您可以使用clip_upper:

f = f.clip_upper(Threshold)
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

  • 如果您的数据框中有多于一列,这将覆盖它们全部。所以在这种情况下,我认为你会想要做 `df['val'][df['val'] > 0.175] = 0.175`。不过您可能还想将其分成两行,以便以后更容易观察。 (3认同)