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

问题描述 投票:0回答:2

我有一个系列:

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

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

python pandas indexing series
2个回答
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]

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
© www.soinside.com 2019 - 2024. All rights reserved.