如何将MMM-YYYY中的Excel日期转换为日期时间或字符串?

时间:2018-09-10 03:30:37

标签: python pandas datetime dataframe

我的数据框来自一个Excel文件,该文件的日期格式设置为例如2018年1月。

我想更改为日期时间,例如01-2018,甚至更改为字符串,例如01/2018。

我有两个问题:

  1. 当尝试转换为日期时间时,出现了超出范围的错误(纳秒)

    twoyear_df['Date'] = twoyear_df['Date'].apply(lambda x: pd.to_datetime(x).strftime('%m/%Y'))
    
  2. 当我尝试将其转换为字符串时:

    twoyear_df['Date'] = pd.to_datetime(twoyear_df['Date'], format='%m%Y')
    

我得到

ValueError: time data 'Sep 18' does not match format '%m%Y' (match)

该怎么办?似乎由于纳秒级的问题而无法更改为日期时间,并且因为无法更改其日期时间而无法将其更改为字符串?

我不确定如何提供数据集作为示例。我在这里放一个样品

         Date  Price   Open   High    Low Change %
0  Sep 18  2.707  2.637  2.711  2.629    2.95%
1  Aug 18  2.629  2.669  2.686  2.587   -1.68%
2  Jul 18  2.674  2.524  2.690  2.508    5.61%
3  Jun 18  2.532  2.431  2.602  2.427    3.94%
4  May 18  2.436  2.492  2.598  2.299   -2.25%
5  Apr 18  2.492  2.278  2.508  2.234    9.78%
6  Mar 18  2.270  2.254  2.366  2.197    0.53%
7  Feb 18  2.258  2.157  2.286  1.947    5.07%
8  Jan 18  2.149  1.907  2.165  1.891   13.88%
9  Dec 17  1.887  1.790  1.927  1.746    5.42% 

我避免使用NaT,因为我需要进行一些时间序列分析。我觉得excel保存的所有日期都有一个纳秒级的问题。有没有办法绕过或完全删除它?

1 个答案:

答案 0 :(得分:2)

我设法成功解决了自己的问题。感谢您的关注。如果有更好的解决方案,我会为之

twoyear_df['Date'] = pd.to_datetime(twoyear_df['Date'], format='%b %y')