将 Pandas 时间对象转换为字符串

Posted

技术标签:

【中文标题】将 Pandas 时间对象转换为字符串【英文标题】:Convert Pandas time object to string 【发布时间】:2020-08-27 22:53:49 【问题描述】:

我有一个列表列表 dates 包含 DateTimeIndex。

[DatetimeIndex(['2016-01-16 22:00:00', '2016-01-16 22:15:00',
                '2016-01-16 22:30:00', '2016-01-16 22:45:00',
                '2016-01-16 23:00:00', '2016-01-16 23:15:00',
                '2016-01-16 23:30:00', '2016-01-16 23:45:00',
                '2016-01-17 00:00:00'],
               dtype='datetime64[ns]', freq=None)
...
 DatetimeIndex(['2016-01-23 21:30:00', '2016-01-23 21:45:00',
                '2016-01-23 22:00:00', '2016-01-23 22:15:00',
                '2016-01-23 22:30:00', '2016-01-23 22:45:00',
                '2016-01-23 23:00:00', '2016-01-23 23:15:00',
                '2016-01-23 23:30:00'],

我想将此列表转换为如下所示:

[DatetimeIndex(['Saturday 22:00:00', 'Saturday 22:15:00',
                'Saturday 22:30:00', 'Saturday 22:45:00',
                'Saturday 23:00:00', 'Saturday 23:15:00',

等等。格式必须是字符串,我喜欢保留列表。 我尝试了以下方法,但没有返回我想要的内容

[list(zip(i.day_name(), i.time)) for i in dates]


[[('Saturday', datetime.time(22, 0)),
  ('Saturday', datetime.time(22, 15)),
  ('Saturday', datetime.time(22, 30)),
  ('Saturday', datetime.time(22, 45)),
  ('Saturday', datetime.time(23, 0)),
  ('Saturday', datetime.time(23, 15)),
  ('Saturday', datetime.time(23, 30)),
  ('Saturday', datetime.time(23, 45)),
  ('Sunday', datetime.time(0, 0))],

但是,当我尝试将 i.time 转换为字符串时,会出现以下错误:

AttributeError: 'numpy.ndarray' object has no attribute 'apply'

有没有人可以帮助我?将不胜感激,谢谢!

【问题讨论】:

【参考方案1】:

DatetimeIndex.strftime%A 一起用于带有HH:MM:SS 次的日期名称:

dates = pd.DatetimeIndex(['2016-01-16 22:00:00', '2016-01-16 22:15:00',
                          '2016-01-16 22:30:00', '2016-01-16 22:45:00',
                          '2016-01-16 23:00:00', '2016-01-16 23:15:00',
                          '2016-01-16 23:30:00', '2016-01-16 23:45:00',
                          '2016-01-17 00:00:00'])

out = [i.strftime('%A %H:%M:%S') for i in dates]
print (out)
['Saturday 22:00:00', 'Saturday 22:15:00', 'Saturday 22:30:00', 
 'Saturday 22:45:00', 'Saturday 23:00:00', 'Saturday 23:15:00', 
 'Saturday 23:30:00', 'Saturday 23:45:00', 'Sunday 00:00:00']

【讨论】:

以上是关于将 Pandas 时间对象转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

将 Pandas DataFrame 中的日期对象列转换为字符串

Pandas:如何将数据框列中的“时间戳”值从对象/字符串转换为时间戳?

将数据框转换为rec数组(将对象转换为字符串)

Pandas 数据框无法将列数据类型从对象转换为字符串以进行进一步操作

如何将“字节”对象转换为 Pandas Dataframe、Python3.x 中的文字字符串?

Pandas `read_json` 函数将字符串转换为 DateTime 对象,即使指定了 `convert_dates=False` 属性