我正在尝试将Pandas DataFrame中的date列转换为datetime格式。如果我不指定日期格式,则可以正常工作,但是由于时间格式不同,在代码中进一步出现问题。
欧洲日期格式的原始日期看起来像这样10/10/2019 6:00
。
我尝试这样指定格式:
df['PeriodStartDate'] = pd.to_datetime(df['PeriodStartDate'],
format="%d/%m/%Y")
这会导致错误:unconverted data remains 6:00
然后,我尝试将格式指令更新为format="%d/%m/%Y %-I/%H"
,这又带来了另一个错误:'-' is a bad directive in format '%d/%m/%Y %-I/%H'
,尽管我认为to_datetime
使用相同的指令,并且{允许后者strftime
。
无奈之下,我决定切掉字符串的结尾,因为我真的不需要小时和分钟:
%-I
但这再次导致错误: df['PeriodStartDate'] = df['PeriodStartDate'].str[:10]
df['PeriodStartDate'] = pd.to_datetime(df['PeriodStartDate'],
format="%d/%m/%Y")
当然是由于某些日期有9个数字,例如ValueError: unconverted data remains:
不太确定从这里出发。
答案 0 :(得分:1)
格式%H:%M
会起作用(不要忘记介于两者之间的:
)
pd.to_datetime('10/10/2019 6:00', format="%m/%d/%Y %H:%M")
Out[1049]: Timestamp('2019-10-10 06:00:00')
pd.to_datetime('3/10/2019 18:00', format="%d/%m/%Y %H:%M")
Out[1064]: Timestamp('2019-10-03 18:00:00')
答案 1 :(得分:0)
哦,我好傻。我弄清楚了问题所在。出于某种原因,我认为小时是12小时制,但实际上是24小时制,因此将指令更改为"%d/%m/%Y %H:%M"
就可以解决。