我有一个分钟频率DataFrame和一个与每分钟时间相关联的单个值:
2021-08-02 08:58:00-05:00 90.17
2021-08-02 08:59:00-05:00 90.31
2021-08-02 09:00:00-05:00 90.45
2021-08-02 09:01:00-05:00 90.60
2021-08-02 09:02:00-05:00 90.74
2021-08-02 09:03:00-05:00 90.88
2021-08-02 09:04:00-05:00 91.02
2021-08-02 09:05:00-05:00 91.17
2021-08-02 09:06:00-05:00 91.31
2021-08-02 09:07:00-05:00 91.46
2021-08-02 09:08:00-05:00 91.60
2021-08-02 09:09:00-05:00 91.75
2021-08-02 09:10:00-05:00 91.89
2021-08-02 09:11:00-05:00 92.04
2021-08-02 09:12:00-05:00 92.18
2021-08-02 09:13:00-05:00 92.33
2021-08-02 09:14:00-05:00 92.48
2021-08-02 09:15:00-05:00 92.63
2021-08-02 09:16:00-05:00 92.77
2021-08-02 09:17:00-05:00 92.92
2021-08-02 09:18:00-05:00 93.07
2021-08-02 09:19:00-05:00 93.22
2021-08-02 09:20:00-05:00 93.37
2021-08-02 09:21:00-05:00 93.52
2021-08-02 09:22:00-05:00 93.67
2021-08-02 09:23:00-05:00 93.82
2021-08-02 09:24:00-05:00 93.98
2021-08-02 09:25:00-05:00 94.13
2021-08-02 09:26:00-05:00 94.28
2021-08-02 09:27:00-05:00 94.43
2021-08-02 09:28:00-05:00 94.59
2021-08-02 09:29:00-05:00 94.74
2021-08-02 09:30:00-05:00 94.90
2021-08-02 09:31:00-05:00 95.05
2021-08-02 09:32:00-05:00 95.21
2021-08-02 09:33:00-05:00 95.37
我要做的是选择每五个整数或下一个最近的浮点数。例如
2021-08-02 08:57:00-05:00 90.03
2021-08-02 09:31:00-05:00 95.05
我觉得我是在正确的轨道上使用下面的代码来选择每个整数值,但我不知道如何展开它来得到我正在寻找的…
resample = df[df['AZ'].map(lambda x: x.is_integer())]
导致……
11:22:00 121
12:39:00 160
13:33:00 201
14:55:00 241
如果您知道范围内每个可以被5整除的值都有一行靠近它,您可以:
df['closest_5'] = (df['value'] / 5).round(0) * 5
df['distance_to_closest_5'] = (df['value'] - df['closest_5']).abs()
resample = df.sort_values(['closest_5', 'distance_to_closest_5'].drop_duplicates('closest_5', keep='first')[['time', 'value']]