我有一个 Pandas 数据框,其中列名“A”具有日期和时间值(到目前为止,它是字符串类型)。
A 栏 | B 栏 |
---|---|
2024-07-11 13:09:37.466 | PC2 |
2024-07-11 13:24:43.03 | PC1 |
2024 年 5 月 6 日 22:49:50 | PC5 |
我正在尝试从时间中删除毫秒,并且只有一种格式,即 %Y-%m-%d %H:%M:%S。所以输出应该如下所示:
A 栏 | B 栏 |
---|---|
2024-07-11 13:09:37 | PC2 |
2024-07-11 13:24:43 | PC1 |
2024-05-06 22:49:50 | PC5 |
将 A 列转换为日期时间类型,这样我就可以稍后按日期时间排序
我尝试了以下解决方案,但都给出了错误。我认为是由于以毫秒为单位的不同位数
df['Column A'] = pd.to_datetime(Df['event time']).dt.strftime('%Y-%m-%d %H:%M:%S')
df['Column A'] = Df['Column A'].apply(lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
首先,请在发布问题时附上实际的错误回溯。
strptime 需要给出字符串的格式。你不能仅仅忽略毫秒。获得日期时间对象后,您可以将毫秒设置为零或使用 strftime 生成仅包含您想要的位的字符串。
我不确定 pd.to_datetime 期望什么,但我怀疑您的问题可能是因为您的日期之一采用人类可读的格式,月份作为字符串。您可能需要使用日期时间解析函数,该函数比 pandas 提供的任何函数更宽松。不过,它可能会慢很多。
# Convert string to date-time format
df['Column A'] = pd.to_datetime(df['Column A'], format='%Y-%m-%d %H:%M:%S:%f')
#convert %Y-%m-%d %H:%M:%S:%f into %Y-%m-%d %H:%M:%S format as str
df['Column A'] = df['Column A'].dt.strftime('%Y-%m-%d %H:%M:%S')