我有一个系列:
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
我希望将该系列的长度增加一个并将其移位,以便预期的输出为:(今天显然是今天的日期,格式相同)
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()
但没有运气。
有任何想法吗?我不能追加或扩展列表,(理想情况下是追加)作为对象,因为它们是日期和时间的列表。
您可以增加索引,通过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]
您可以在此处附加:
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