熊猫to_datetime错误'未转换的数据保留'

时间:2019-10-05 03:38:26

标签: python pandas datetime

我正在尝试将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:

不太确定从这里出发。

2 个答案:

答案 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"就可以解决。