我有一列是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)
但这不起作用。
答案 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