我大约两周后开始使用熊猫图书馆。学习新功能。我很感激以下问题的帮助。
我有一个日期为混合格式的列。这些是2种格式
mm/dd/yyyy
dd/mm/yyyy
数据集的摘录: -
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'。这是行不通的。 我也不确定在这种情况下如何使用正则表达式帮助。
另一条信息。日期按排序顺序排列。可以使用信息完成某些事情。
据我所知,如果我们单独看一下,就无法区分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日
答案 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]