ValueError:时间数据与格式不匹配'%d /%m /%Y' (比赛)

时间:2017-07-20 14:29:04

标签: python pandas

我的日期列的格式为7/5/17 14:44。当我将列从一个对象转换为日期格式时,我的日期是17-5-7,这不是我想要的。我只想拥有7/5/17。

当我尝试使用格式='%d /%m /%Y'来切换日期格式的订单时我收到以下错误:

ValueError: time data '3/20/12 0:00' does not match format '%d/%m/%Y' (match)

我的代码如下。我哪里错了?另外,由于我需要格式化3列,是否有更有效的方法来执行此操作?

name_cols = ['GUID1', 'GUID2', 'Org ID', 'Org Name', 'Org Type', 'Chapter', 'Join Date', 'Effective Date', 'Expire Date']
pull_cols = ['Org ID', 'Org Name', 'Org Type', 'Chapter', 'Join Date', 'Effective Date','Expire Date']
df1 = pd.read_csv(path, header=None, encoding="ISO-8859-1", names=name_cols, usecols=pull_cols, index_col=False)
df1['Join Date'] = pd.to_datetime(df1['Join Date'], format='%d/%m/%Y')
df1['Effective Date'] = pd.to_datetime(df1['Effective Date'])
df1['Expire Date'] = pd.to_datetime(df1['Expire Date'])

1 个答案:

答案 0 :(得分:0)

我认为你需要:

df1 = pd.DataFrame({'Join Date':['7/5/17 14:44','7/5/17 14:44']})
print (df1)
      Join Date
0  7/5/17 14:44
1  7/5/17 14:44

df1['Join Date'] = pd.to_datetime(df1['Join Date'], format='%d/%m/%y %H:%M').dt.floor('D')
print (df1)
   Join Date
0 2017-05-07
1 2017-05-07

或按空格使用str.split并按str[0]选择第一个值:

df1['Join Date'] = pd.to_datetime(df1['Join Date'].str.split().str[0], format='%d/%m/%y')
print (df1)

   Join Date
0 2017-05-07
1 2017-05-07

如果不需要日期时间:

df1['Join Date'] = df1['Join Date'].str.split().str[0]
print (df1)

  Join Date
0    7/5/17
1    7/5/17