在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