将数据类型系列转换为日期时间

时间:2019-08-01 20:22:14

标签: python pandas datetime

我有一列是Series,我想转换为日期时间格式。我的数据框的这一特定列如下所示:

x
Aug 1, 2019 7:20:04 AM
Aug 1, 2019 7:20:14 AM
Aug 1, 2019 7:20:24 AM
Aug 1, 2019 7:20:34 AM

我在这里似乎已经找到了一些答案,我尝试相应地修改我的代码。

datetime.datetime.strptime(df["x"],'%b %d, %Y %H:%M:%S %a').strftime('%d/%m/%Y %H:%M:%S')

但是出现以下错误:

  

strptime()参数1必须是str,而不是Series

由于这个原因,我尝试使用以下命令转换为字符串:

df['x'] = df['x'].apply(str)
df['x'] = df['x'].to_string()
df['x'] = df['x'].astype(str)

但这不起作用。

1 个答案:

答案 0 :(得分:3)

我假设您正在使用pandas。您可以使用pandas to_datetime()函数来代替只能为给定调用转换单个值的datetimes函数。另外,对于AM / PM,您需要%p而不是%a

df['x'] = pd.to_datetime(df['x'], format="%b %d, %Y %H:%M:%S %p")

编辑

检查以确保您的数据与您发布的数据完全相同。我复制并粘贴了您的数据,并创建了一个数据框,它可以正常工作。

df = pd.DataFrame({'x':['Aug 1, 2019 7:20:04 AM','Aug 1, 2019 7:20:14 AM','Aug 1, 2019 7:20:24 AM','Aug 1, 2019 7:20:34 AM']})

输出:

                        x
0  Aug 1, 2019 7:20:04 AM
1  Aug 1, 2019 7:20:14 AM
2  Aug 1, 2019 7:20:24 AM
3  Aug 1, 2019 7:20:34 AM



df['x'] = pd.to_datetime(df['x'],format='%b %d, %Y %H:%M:%S %p')

输出:

                    x
0 2019-08-01 07:20:04
1 2019-08-01 07:20:14
2 2019-08-01 07:20:24
3 2019-08-01 07:20:34