我想获得以下示例数据的时间变化率:
datetime | value
2020-03-01:00 | 20
2020-03-02:01 | 21
2020-03-03:02 | 19.3
2020-03-04:03 | 22
2020-03-05:04 | 23.7
2020-03-06:05 | 30
示例答案应创建一个名为 change in time 的新列。当“值”列高于特定范围(例如 20)时,应更新此列。
示例答案如下:
datetime | value | change in time
2020-03-01:00 | 20 | -
2020-03-02:01 | 21 | 1mins
2020-03-03:02 | 19.3 | 0mins
2020-03-04:03 | 22 | 1mins
2020-03-05:04 | 23.7 | 1mins
2020-03-06:05 | 30 | 1mins
答案 0 :(得分:4)
使用 Series.diff
将 Series.dt.total_seconds
转换为秒,然后替换为 0
如果值低于 20
,最后除以 60
为分钟:>
#change format by data, here is used YYYY-MM-DD:HH
df['datetime'] = pd.to_datetime(df['datetime'], format='%Y-%m-%d:%H')
df['change in time'] = (df['datetime'].diff()
.dt.total_seconds()
.mask(df['value'].lt(20), 0)
.div(60))