将字符串转换为datetime-python数据帧

将字符串转换为datetime-python数据帧,python,datetime,Python,Datetime,您好,我想将数据框列(字符串)转换为日期。我发现它正确地转换了一些日期,但有些日期是错误的 df Id Date Rev 1605380 1/12/2018 3000.0 2237851 27/11/2018 3000.0 1797180 11/2/2018 2000.0 1156126 9/1/2018 2000.0 1205792 8/4/2017 2000.0 df['Date']=pd.to_datetime(df['Date']) 我得到

您好,我想将数据框列(字符串)转换为日期。我发现它正确地转换了一些日期,但有些日期是错误的

df
  Id       Date     Rev
1605380 1/12/2018   3000.0
2237851 27/11/2018  3000.0
1797180 11/2/2018   2000.0
1156126 9/1/2018    2000.0
1205792 8/4/2017    2000.0
df['Date']=pd.to_datetime(df['Date'])

我得到的输出

 Id       Date      Rev
1605380 2018-01-12  3000.0
2237851 2018-11-27  3000.0
1797180 2018-11-02  2000.0
1156126 2018-09-01  2000.0
1205792 2017-08-04  2000.0
似乎如果“天”不是两位数,datetime将其转换为“月”,而不是“天”。因此,2018年1月12日应该是2018-12-01,而不是2018-01-12。 如何解决此问题

我实际上只需要每年和每月的输出

理想输出

  Id       Date     Rev
1605380 2018-12    3000.0
2237851 2018-11    3000.0
1797180 2018-02    2000.0
1156126 2018-01    2000.0
1205792 2017-04    2000.0

您只需将
format
参数指定为
'%d/%m/%Y'
,以明确说明注释的日期格式。或者将
dayfirst
设置为
True
。datetime对象实际上包含年、月、日和时间的信息,因此要仅显示月和年,必须将其转换回字符串:

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True).dt.strftime('%Y-%m')

您可以在
to_datetime
函数中使用
format
对日期的确切语法进行编码:这里是
format=“%d/%m/%Y”
,之后您可以将datetime对象转换为任何字符串,参见此处。请注意,
pandas
试图提供帮助,并将您的日期和时间字符串解释为
m/d/Y
,但不能解释的情况除外,并且尝试了类似于
d/m/Y
(如2018年11月27日)的替代方案@Ascurion的建议是正确的,因为在您的情况下,它应该始终是“%m/%d/%Y”。您好,谢谢您的回复。它仍然将“天”提取为月,而不是将“月”提取为非两位数的天。例如,2018年1月12日变成2018-01年,但应该是2018-12年,这很奇怪。对我有用。
dayfirst=True
format='%d/%m/%Y
都是这样吗?