我在使用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)?
答案 0 :(得分:2)
由于rename
不会更改对象,除非您将inplace
参数设置为True
,如docs中所示。
请注意,可以使用copy
参数,因此您不必创建将旧系列作为参数传递的新系列,就像在第二个示例中一样。