【问题标题】:Pandas compare values for the same time every day熊猫每天比较同一时间的值
【发布时间】:2018-01-04 18:23:13
【问题描述】:

我有这个数据框:

date_time           value
1/10/2016  0:00:00  28.4 
1/10/2016  0:05:00  28.4
1/10/2016  0:10:00  28.4
1/11/2016  0:00:00  27.4
1/11/2016  0:05:00  27.4
1/11/2016  0:10:00  27.4

我想每天计算同一时间戳中两行之间的差异,然后将新计算的数据添加到新列中,如下所示:

date_time           value  change24h
1/10/2016  0:00:00  28.4   NaN
1/10/2016  0:05:00  28.4   NaN
1/10/2016  0:10:00  28.4   NaN
1/11/2016  0:00:00  27.4   -1
1/11/2016  0:05:00  29.4   +1
1/11/2016  0:10:00  28.4   0

我不想添加包含最后一天数据的新列,然后计算变化。还有其他方法吗?提前致谢!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你可以使用:

    #convert column to datetime and create index
    df = df.set_index(pd.to_datetime(df['date_time']))
    #shift by 1 day and reindex for same indices, subtract from right by rsub
    df['change24h'] = df['value'].shift(freq='1D').reindex(df.index).rsub(df['value'])
    #same as
    #df['change24h'] = df['value'].sub(df['value'].shift(freq='1D').reindex(df.index))
    #remove datetime index
    df = df.reset_index(drop=True)
    print (df)
               date_time  value  change24h
    0  1/10/2016 0:00:00   28.4        NaN
    1  1/10/2016 0:05:00   28.4        NaN
    2  1/10/2016 0:10:00   28.4        NaN
    3  1/11/2016 0:00:00   27.4       -1.0
    4  1/11/2016 0:05:00   29.4        1.0
    5  1/11/2016 0:10:00   28.4        0.0
    

    【讨论】:

    • 非常感谢,你让我开心
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多