如何在python中扩展对象系列的长度

时间:2018-09-05 16:12:29

标签: python pandas indexing series

我有一个系列:

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(),但没有运气。

有什么想法吗?我不能追加或扩展列表(理想情况下是即时追加),因为它们是日期和时间的列表。

2 个答案:

答案 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