我有一个系列:
0 2018-08-02 00:00:00
1 2016-07-20 00:00:00
2 2015-09-14 00:00:00
3 2014-09-11 00:00:00
Name: EUR6m3m, dtype: object
我希望将序列的长度加1并将其移位,以使预期的输出为:(今天是明显的今天日期,格式相同)
0 today()
1 2018-08-02 00:00:00
2 2016-07-20 00:00:00
3 2015-09-14 00:00:00
4 2014-09-11 00:00:00
Name: EUR6m3m, dtype: object
我当前的方法是将最后一个值存储在原始系列中:
a = B[B.last_valid_index()]
然后附加:
B.append(a)
但是我得到了错误:
TypeError: cannot concatenate object of type "<class 'pandas._libs.tslibs.timestamps.Timestamp'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
所以我尝试了:
B.to_pydatetime()
,但没有运气。
有什么想法吗?我不能追加或扩展列表(理想情况下是即时追加),因为它们是日期和时间的列表。
答案 0 :(得分:1)
您可以增加索引,通过pd.Series.loc
按标签添加项目,然后使用sort_index
。
根据您提供的输入数据,尚不清楚last_valid_index
的相关性。
s = pd.Series(['2018-08-02 00:00:00', '2016-07-20 00:00:00',
'2015-09-14 00:00:00', '2014-09-11 00:00:00'])
s = pd.to_datetime(s)
s.index += 1
s.loc[0] = pd.to_datetime('today')
s = s.sort_index()
结果
0 2018-09-05
1 2018-08-02
2 2016-07-20
3 2015-09-14
4 2014-09-11
dtype: datetime64[ns]
答案 1 :(得分:0)
您可以在此处添加:
s = pd.Series([1,2,3,4])
s1 = pd.Series([5])
s1 = s1.append(s)
s1 = s1.reset_index(drop=True)
简单而优雅的输出:
0 5
1 1
2 2
3 3
4 4