Pandas日期时间格式不一致

时间:2016-05-31 06:12:39

标签: python pandas string-to-datetime

我大约两周后开始使用熊猫图书馆。学习新功能。我很感激以下问题的帮助。

我有一个日期为混合格式的列。这些是2种格式

  1. mm/dd/yyyy
  2. dd/mm/yyyy
  3. 数据集的摘录: -

    Dates  
    6/5/2016  
    7/5/2016  
    7/5/2016  
    7/5/2016  
    9/5/2016  
    9/5/2016  
    9/5/2016  
    9/5/2016  
    5/13/2016  
    5/14/2016  
    5/14/2016  
    

    我正在努力将这些转换为通用格式。我尝试过使用pandas的'to_datetime'。这是行不通的。 我也不确定在这种情况下如何使用正则表达式帮助。

    另一条信息。日期按排序顺序排列。可以使用信息完成某些事情。

    EDIT1:

    据我所知,如果我们单独看一下,就无法区分6/4/2016和2016年5月6日。但是,我希望日期按升序排列,实际数据集的传播时间超过一年,会有一种方法来理解它。是否有人知道一个函数可以理解格式,因为日期是按升序排列的?

    EDIT2: 2个月的样本: - 2016年4月和5月。请注意,没有模式。因此,请不要根据以下数据的模式提出任何解决方案。

      

    2016年4月1日   2016年4月1日   2016年4月3日   2016年4月3日   2016年3月4日   2016年4月4日   2016年4月4日   2016年4月5日   2016年4月5日   2016年4月7日   2016年4月7日   2016年4月8日   2016年4月8日   2016年4月14日   2016年4月16日   2016年6月4日   2016年7月4日   2016年8月4日   2016年11月4日   2016年11月4日   2016年11月4日   2016年11月4日   2016年11月4日   2016年12月4日   2016年12月4日   2016年12月4日   13/4/2016   13/4/2016   13/4/2016   13/4/2016   14/04/2016   15/4/2016   16/4/2016   16/4/2016   18/4/2016   18/4/2016   19/4/2016   19/4/2016   20/4/2016   20/4/2016   21/4/2016   21/4/2016   21/4/2016   22/4/2016   23/4/2016   23/4/2016   25/4/2016   25/4/2016   26/4/2016   26/4/2016   26/4/2016   26/4/2016   26/4/2016   26/4/2016   29/4/2016   29/4/2016   29/4/2016   30/4/2016   2016年2月5日   2016年2月5日   2016年3月5日   2016年3月5日   2016年3月5日   2016年3月5日   2016年4月5日   2016年5月4日   2016年5月4日   2016年5月4日   2016年6月5日   2016年6月5日   2016年7月5日   2016年7月5日   2016年7月5日   2016年9月5日   2016年9月5日   2016年9月5日   2016年9月5日   2016年10月5日   2016年10月5日   2016年11月5日   2016年11月5日   2016年12月5日   2016年5月13日   2016年5月14日   2016年5月14日   2016年5月15日   2016年5月16日   2016年5月16日   2016年5月16日   2016年5月16日   2016年5月16日   2016年5月16日   2016年5月16日   2016年5月17日   2016年5月17日   2016年5月18日   2016年5月18日   2016年5月19日   2016年5月19日   二零一六年五月二十日   二零一六年五月二十日   二零一六年五月二十日   二零一六年五月二十日   二零一六年五月二十日   2016年5月21日   2016年5月23日   2016年5月23日   2016年5月23日   2016年5月23日   2016年5月23日   2016年5月23日   2016年5月24日   2016年5月24日   2016年5月25日   2016年5月26日   2016年5月26日   2016年5月26日   2016年5月27日   2016年5月27日   2016年5月27日   2016年5月27日   2016年5月27日   2016年5月27日   2016年5月27日   2016年5月28日   2016年5月30日   2016年5月30日

1 个答案:

答案 0 :(得分:1)

真正的问题是你的数据集中有不明确的日期(你把它解析为mm / dd / yyyy或dd / mm / yyyy,如果它可能是?(我已经在这里了) ,我们决定只挑选大多数似乎是什么;基本上数据集被泄露......我们不得不这样对待它。)

如果它是一个系列,那么用pd.to_datetime命中它似乎有效:

In [11]: s = pd.Series(['6/5/2016', '7/5/2016', '7/5/2016', '7/5/2016', '9/5/2016', '9/5/2016', '9/5/2016', '9/5/2016', '5/13/2016', '5/14/2016', '5/14/2016'])

In [12]: pd.to_datetime(s)
Out[12]:
0    2016-06-05
1    2016-07-05
2    2016-07-05
3    2016-07-05
4    2016-09-05
5    2016-09-05
6    2016-09-05
7    2016-09-05
8    2016-05-13
9    2016-05-14
10   2016-05-14
Name: 0, dtype: datetime64[ns]

注意:如果您的格式一致,则可以明确地传递它:

In [13]: pd.to_datetime(s, format="%m/%d/%Y")
Out[13]:
0    2016-06-05
1    2016-07-05
2    2016-07-05
3    2016-07-05
4    2016-09-05
5    2016-09-05
6    2016-09-05
7    2016-09-05
8    2016-05-13
9    2016-05-14
10   2016-05-14
Name: 0, dtype: datetime64[ns]