2017-11-27 14 views
0

xlsxファイルから日付を読み取る必要があります。まず は、私はそのようにファイルをロードしようとした:Excelと異なる日付のフォーマット

df = pd.read_excel('file.xls') 

と列の「日付」(私は例を配置します)間違っている:

output: 
0  2017-03-05 
1  2017-03-05 
2  2017-03-05 
3  2017-03-05 
4  2017-03-05 
5  2017-03-05 
6  2017-03-05 
7  2017-03-05 
8  2017-03-05 
9  2017-03-05 
10 2017-03-05 
11 2017-03-05 
12 2017-03-05 
13 2017-05-17 
14 2017-05-18 
15 2017-05-18 
16 2017-05-22 
17 2017-05-22 

問題は0からということです「2017-03-05」(3月5日)の代わりに「2017-05-03」(5月3日)になる可能性があるため、日付は正しくありません。 13から17までは、正しい形式 '2017-05-17'(YYYY-MM-DD)のようになります。

output: 
0  2017-03-05 00:00:00 
1  2017-03-05 00:00:00 
2  2017-03-05 00:00:00 
3  2017-03-05 00:00:00 
4  2017-03-05 00:00:00 
5  2017-03-05 00:00:00 
6  2017-03-05 00:00:00 
7  2017-03-05 00:00:00 
8  2017-03-05 00:00:00 
9  2017-03-05 00:00:00 
10  2017-03-05 00:00:00 
11  2017-03-05 00:00:00 
12  2017-03-05 00:00:00 
13    05/17/2017 
14    05/18/2017 
15    05/18/2017 
16    05/22/2017 
17    05/22/2017 

だから、Pythonは、カラム日は異なる形式の値を読み取る:

df = pd.read_excel('file.xls', converters={'Date':str}) 

とPythonが日付列のこの値を印刷:

だから、私はそのようにExcelのロード中に変換を指定するためにしようと試みました。

「DD/MM/YYYY」というユニークな形式でこれらの異なる形式を変換するにはどうすればよいですか?

ありがとうございます。

+0

https://stackoverflow.com/a/14524356/5448626 – Vityata

答えて

0

[OK]を、私はこの方法で行っている:

df['DATE'] = df['DATE'].apply(lambda x: datetime.datetime.strptime(x, '%Y-%d-%m %H:%M:%S').strftime('%d/%m/%Y') if x.find(':')!=-1 else datetime.datetime.strptime(x, '%m/%d/%Y').strftime('%d/%m/%Y')) 

は、今では動作します!

関連する問題