2016-11-28 3 views
2

私は日中の株式市場データを持つCSVファイルをパンダのデータフレームに読み込んでいます。 「DD.MM.YYYY」:パンダをPythonで "dd.mm.yyyy"を "yyyy-mm-dd"に変換するには?

import pandas as pd 

df = pd.read_csf('file.csv') 
df.columns = ['Day', 'Time', 'Open', 'High', 'Low', 'Volume'] 
df.head() 

    Day   Time Open High Low  Close Volume 
0 23.11.2009 17:15 1104.00 1104.00 1104.00 1104.00 2 
1 23.11.2009 17:20 1103.00 1103.00 1103.00 1103.00 11 
2 23.11.2009 17:25 1103.75 1103.75 1103.75 1103.75 1 
3 23.11.2009 17:30 1103.25 1103.25 1102.50 1102.50 3 
4 23.11.2009 17:35 1103.25 1103.50 1103.00 1103.00 13 

残念ながらコラム「日」の日付フォーマットは、欧州の日付形式です。たとえば、「28.11.2016」です。

「日」列を「yyyy-mm-dd」や「2016-11-28」のように簡単に変換するにはどうすればよいですか?

答えて

2

to_datetimeちょうどあなたの日付文字列で動作します:

In [3]: 
pd.to_datetime(df['Day']) 

Out[3]: 
0 2009-11-23 
1 2009-11-23 
2 2009-11-23 
3 2009-11-23 
4 2009-11-23 
Name: Day, dtype: datetime64[ns] 

これは、あなたがread_csvparse_dates=['Day']を渡された場合、それはあなたのCSVファイルの読み込みに変換しているだろうことをdatetime64

注意を返します。

In [6]: 
df = pd.read_csv(io.StringIO(t), parse_dates=['Day'], index_col=0) 
df 

Out[6]: 
     Day Time  Open  High  Low Close Volume 
0 2009-11-23 17:15 1104.00 1104.00 1104.00 1104.00  2 
1 2009-11-23 17:20 1103.00 1103.00 1103.00 1103.00  11 
2 2009-11-23 17:25 1103.75 1103.75 1103.75 1103.75  1 
3 2009-11-23 17:30 1103.25 1103.25 1102.50 1102.50  3 
4 2009-11-23 17:35 1103.25 1103.50 1103.00 1103.00  13 

パンダは一般的にデータのコピーを返しますが、いくつかのメソッドは驚くほど速い答えのための

df['Day'] = pd.to_datetime(df['Day']) 
+0

感謝を:引数が、to_datetimeはあなたが上書きする、自己割り当てる必要はありません!私はそれが簡単だろうとは知らなかった。あなたにもう1つ質問してもらえますか?日付が変換された後、どのように変換日を「日」列に入れるのですか? – PeterMkc

+0

pandasはデフォルトでデータのコピーを返しますので、 'df ['Day'] = pd.to_datetime(df ['Day'])' – EdChum

+0

を自己割り当てする必要があります。私は右のアイコンをチェックしてほしい。どうもありがとう! – PeterMkc

関連する問題