【问题标题】:pandas datetime dd.mm.yyyy conversion failspandas datetime dd.mm.yyyy 转换失败
【发布时间】:2020-03-14 16:28:13
【问题描述】:

我想将pandas中的字符串转换为日期时间,但转换失败。

我的数据格式例如 06.12.2015 这意味着日.月.年

try:
    #Code that may raise an error
    df['date']= pd.to_datetime(df['date'], format='%d%m%Y')
    #Raising your own errors
    raise Exception("Error converting date")
except Exception as e: 
    #code to run if error occurs
    logging.error("Exception occurred  " + filename , exc_info=True)
    #code to run if error is raised
    print("Conversion not work.")
else:
    df['date']= pd.to_datetime(df['date'], format='%d.%m.%y')

然后

print(df.dtypes)

给出对象并引发异常。

有人可以帮帮我吗?

【问题讨论】:

  • 你可以用''替换.:pd.to_datetime(s.str.replace('.',''), format='%d%m%Y'),用s = pd.Series(['06.12.2015','06122015'])测试然后pd.to_datetime(s.str.replace('.',''), format='%d%m%Y')
  • 我没有一个系列,而是一个表格列,其日期格式为 11.02.1984 ,解决方案会是什么样子
  • 表格列?那不是一个系列吗?将s 替换为table['column']
  • df['date']=pd.to_datetime(df['date'],format='%d.%m.%Y') !!!
  • 你能创建一个“reprex”吗? stackoverflow.com/help/minimal-reproducible-example

标签: python pandas datetime


【解决方案1】:

给定你的file.dat:

string,date,number
a string,06.12.2015,1.0
a string,06.12.2015,2.0

读入:

b=pd.read_csv('yourfile.dat')

您需要将.s 输入日期格式,并且您需要大写Y 以读取四位数年份。:

b['date']=pd.to_datetime(b['date'],format='%d.%m.%Y')

【讨论】:

  • df['date']= pd.to_datetime(df['date'], format='%d.%m.%Y') 到底有什么区别?我之前已经阅读了 csv。输入数据的格式为 01.12.1984
  • 两者都不起作用!这不是问题,正如您在上面看到的那样,这正是我所做的。我都试过了,数据匹配。
  • @Smiley 仅凭这个问题很难准确判断您做了什么。一个简化的示例和完整的错误跟踪可能会有所帮助......“我都试过了,数据匹配”恐怕我不确定你在这里指的是什么......
猜你喜欢
  • 1970-01-01
  • 2017-11-29
  • 2012-08-24
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 2022-01-02
相关资源
最近更新 更多