[pandas] 转换DatetimeIndex为一个日期字符串的Series
[pandas] 转换DatetimeIndex为一个日期字符串的Series
遇到的问题:
需要将一个DatetimeIndex转换为一个日期字符串的Series类型。
比如,有一个DatetimeIndex是这样的:
print dtiDatetimeIndex(['2015-09-21 10:30:00', '2015-09-21 11:30:00', '2015-09-21 14:00:00', '2015-09-21 15:00:00', '2015-09-22 10:30:00', '2015-09-22 11:30:00', '2015-09-22 14:00:00', '2015-09-22 15:00:00'], dtype='datetime64[ns]', freq=None, tz=None)123456
现在只需要这些数据里面的2015-09-21,2015-09-22这样的日期信息,时间信息可以省略。
解决方案:
如果Index的类型是普通的pandas.core.index.Index,那么这个问题好解决:
df.index.str.split(' ').str[0]1
然而当尝试在DatetimeIndex上使用str对象时,会抛出异常:
AttributeError: Can only use .str accessor with string values (i.e. inferred_type is 'string', 'unicode' or 'mixed')12
经过查看API,发现可以先将DatetimeIndex转换为一个类型为datetime的数组,然后对该数组进行操作得到一个numpy.ndarray,最后将这个array转化为Series即可,具体代码如下所示:
pydate_array = dti.to_pydatetime()date_only_array = np.vectorize(lambda s: s.strftime('%Y-%m-%d'))(pydate_array )date_only_series = pd.Series(date_only_array)123
最后得到的结果就是只含有日期的Series:
print date_only_series 0 2015-09-211 2015-09-212 2015-09-213 2015-09-214 2015-09-225 2015-09-226 2015-09-227 2015-09-22dtype: object
赞 (0)