在dataframe python中,按timestep在开头添加一个值

在dataframe python中,按timestep在开头添加一个值,python,pandas,datetime,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

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

  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  
我想在第一个索引中添加值,并且datetime将由timestep自动计算(在本例中为30分钟),有更好的方法吗

提前谢谢

选择1
选择2 设置索引的频率,以便可以自然递减。
这来自@root的回答


您还可以将
reindex
与索引
append

df.reindex(pd.Index(['2014-05-21 09:30:00']).append(df.index),fill_value=2)
Out[116]: 
                     value
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

因为我有一些其他的数据帧具有不同的时间步长(15分钟,60分钟…etw),所以是否可以不写(例如“分钟(30)”,而是手动计算?您可以使用
df.index[1]-df.index[0]计算时间步长
使用类似于
df.index.freq=df.index.expressed\u freq
@root的东西可能会更安全,还记得我很久以前问过的那个问题吗。需要将该字符串转换为时间增量。>>找到它可能我遗漏了一些东西,但是
df.index[0]-1
在按照我前面的注释中指定的设置了freq之后,给了我预期的结果。
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
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
df.reindex(pd.Index(['2014-05-21 09:30:00']).append(df.index),fill_value=2)
Out[116]: 
                     value
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