python - 在数据帧python中按时间步长在开头添加一个值

标签 python pandas datetime

我有一个数据框,如下所示,

  df =
   index                value
2014-05-21 10:00:00      13.0
2014-05-21 10:30:00       8.0
2014-05-21 11:00:00       9.0
2014-05-21 11:30:00       7.0
2014-05-21 12:00:00       2.0
....

如何在开头添加一个新值2,它会是

    df =
   index                value
2014-05-21 09:30:00       2.0   <- new value with new index automatically
2014-05-21 10:00:00      13.0     calculated ( 10 o'clock - 30min(timestep))
2014-05-21 10:30:00       8.0
2014-05-21 11:00:00       9.0
2014-05-21 11:30:00       7.0
2014-05-21 12:00:00       2.0  

type(df.index) = pandas.core.indexes.datetimes.DatetimeIndex

我想在第一个索引中添加值,并且日期时间将按时间步长自动计算(在本例中为 30 分钟),有没有更好的方法可以做到这一点?

提前致谢!

最佳答案

选项 1

df.loc[df.index[0] - pd.offsets.Minute(30), 'value'] = 2
df = df.sort_index()

df

                     value
index                     
2014-05-21 09:30:00    2.0
2014-05-21 10:00:00   13.0
2014-05-21 10:30:00    8.0
2014-05-21 11:00:00    9.0
2014-05-21 11:30:00    7.0
2014-05-21 12:00:00    2.0

选项 2

设置索引的频率,以便可以自然递减。
这是来自@root HERE的回答

from pandas.tseries.frequencies import to_offset

df.index.freq = to_offset(df.index.inferred_freq)
df.combine_first(pd.DataFrame(dict(value=[2]), [df.index[0] - 1]))

                     value
index                     
2014-05-21 09:30:00    2.0
2014-05-21 10:00:00   13.0
2014-05-21 10:30:00    8.0
2014-05-21 11:00:00    9.0
2014-05-21 11:30:00    7.0
2014-05-21 12:00:00    2.0

关于python - 在数据帧python中按时间步长在开头添加一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806757/

相关文章:

python - 使用正则表达式将数据从字符串移动到 pandas 数据框?

java - 日期时间字符串 + TimeZone

JavaScript "new Date"创建日期与原始日期字符串的时间不同

android - Android 中的解析异常

python - 什么行为是首选? (嵌入 Python)

python - 捕食者与猎物的Python程序

python - DatabaseError no such table with a ManyToManyField

python - 当作为参数传递或返回时,Numpy 如何处理内存分配?

python - 在尊重其索引结构的同时对多索引进行排序

python - Pandas 的前一组均值变化