可复制设置(用于简单的MCVE):
import pandas as pd
import io
text = '''04/20/2009; 04/20/09; 4/20/09; 4/3/09
Mar-20-2009; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009;
20 Mar 2009; 20 March 2009; 20 Mar. 2009; 20 March, 2009
Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009
Feb 2009; Sep 2009; Oct 2010
6/2008; 12/2009
2009; 2010'''
buf = io.stringIO(text)
df = pd.read_csv(buf, engine='python', delimiter=';\s+', header=None).reset_index()
df
index 0 1 2 \
0 04/20/2009 04/20/09 4/20/09 4/3/09
1 Mar-20-2009 Mar 20, 2009 March 20, 2009 Mar. 20, 2009
2 20 Mar 2009 20 March 2009 20 Mar. 2009 20 March, 2009
3 Mar 20th, 2009 Mar 21st, 2009 Mar 22nd, 2009 None
4 Feb 2009 Sep 2009 Oct 2010 None
5 6/2008 12/2009 None None
6 2009 2010 None None
3
0 None
1 Mar 20 2009;
2 None
3 None
4 None
5 None
6 None
代替
buf
使用文本文件的名称。
您可以使用
df.apply
和
df.stack
pd.Series.sort_values
out = df.stack().apply(pd.to_datetime)\
.reset_index(drop=1)\
.sort_values().dt.strftime('%m/%d/%Y')\
.reset_index(drop=1)
print(out)
0 06/01/2008
1 01/01/2009
2 02/01/2009
3 03/20/2009
4 03/20/2009
5 03/20/2009
6 03/20/2009
7 03/20/2009
8 03/20/2009
9 03/20/2009
10 03/20/2009
11 03/20/2009
12 03/20/2009
13 03/21/2009
14 03/22/2009
15 04/03/2009
16 04/20/2009
17 04/20/2009
18 04/20/2009
19 09/01/2009
20 12/01/2009
21 01/01/2010
22 10/01/2010