【发布时间】:2020-04-04 18:50:37
【问题描述】:
我有一个像这样的数据框
open Start show Einde show
5 NaN 11:30 NaN
6 16:00 18:00 19:45
7 14:30 16:30 18:15
8 NaN NaN NaN
9 18:45 20:45 22:30
这些时间是字符串格式,我想将它们转换为日期时间格式。
每当我尝试使用pd.to_datetime(evs['open'], errors='coerce')(更改其中一列)时,它会将小时更改为完整的日期时间格式,如下所示:2020-04-03 16:00:00 与今天的日期。我想要一个小时,但仍然是日期时间格式,所以我可以添加分钟等。
现在当我使用dt.hour 访问小时时,它返回一个字符串,而不是HH:MM 格式。
有人可以帮帮我吗?我正在通过 Pandas read_csv 读取 CSV,但是当我使用日期解析器时,我遇到了同样的问题。理想情况下,这将在 read_csv 部分而不是单独修复,但此时我会采取任何措施。
谢谢!
【问题讨论】:
-
pd.to_datetime(evs['open']).dt.time -
@Chris 谢谢,这给了我
16:00:00格式,但我想摆脱秒数 -
我不认为你可以去掉秒数并保持
datetime.time的类型,因为16:00:00只是datetime.time(16, 0)如果你想将它格式化为@987654333,你可以转换为字符串@:pd.to_datetime(evs['open']).dt.strftime('%H:%M') -
@Chris 好的,谢谢!我正在寻找接近 R 的 Lubridate 包的东西。我想我将不得不保持秒数。您知道如何在
read_csv函数中将日期解析为这种格式吗?因为在使用parse_dates时我仍然可以获得完整的日期/时间 -
我不认为你可以使用
parse_dates参数因为文件的格式;但是,如果您的所有列都是时间(例如在您的示例数据中),您可以在将文件读入内存后堆叠和取消堆叠:pd.to_datetime(df.stack()).dt.time.unstack()