重命名熊猫系列

时间:2016-09-19 15:01:28

标签: python python-2.7 pandas

我在使用datetime.date

重命名pandas系列时遇到了一些问题
import pandas as pd
a = pd.Series([1, 2, 3, 4], name='t')

我得到了a

0    1
1    2
2    3
3    4
Name: t, dtype: int64

然后,我有:

ts = pd.Series([pd.Timestamp('2016-05-16'), 
                pd.Timestamp('2016-05-17'), 
                pd.Timestamp('2016-05-18'), 
                pd.Timestamp('2016-05-19')], name='time')

ts为:

0   2016-05-16
1   2016-05-17
2   2016-05-18
3   2016-05-19
Name: time, dtype: datetime64[ns]

现在,如果我这样做:

ts_date = ts.apply(lambda x: x.date())
dates = ts_date.unique()

我得到了dates

array([datetime.date(2016, 5, 16), datetime.date(2016, 5, 17),
       datetime.date(2016, 5, 18), datetime.date(2016, 5, 19)], dtype=object)

我有两种方法。有线的是,如果我进行以下重命名(方法1):

for one_date in dates:
    a.rename(one_date)
    print one_date, a.name

我得到了:

2016-05-16 t
2016-05-17 t
2016-05-18 t
2016-05-19 t

但如果我这样做(方法2):

for one_date in dates:
    a = pd.Series(a, name=one_date)
    print one_date, a.name

2016-05-16 2016-05-16
2016-05-17 2016-05-17
2016-05-18 2016-05-18
2016-05-19 2016-05-19

我的问题是:为什么方法rename不起作用(方法1)?

1 个答案:

答案 0 :(得分:2)

由于rename不会更改对象,除非您将inplace参数设置为True,如docs中所示。

请注意,可以使用copy参数,因此您不必创建将旧系列作为参数传递的新系列,就像在第二个示例中一样。