由于熊猫列的差异

时间:2021-01-26 10:29:06

标签: python pandas numpy data-science

我想获得以下示例数据的时间变化率:

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

1 个答案:

答案 0 :(得分:4)

使用 Series.diffSeries.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))