Python:秒数が小数点以下のパース
Pandasでデータフレームに格納するときに,時間にナノ秒まで含まれている時のパースのやり方についてのメモ.
対象とするのはこんなデータ.
//file.csv 17:22:59.703371360,10 17:22:59.788956621,20 17:22:59.790719017,30 17:22:59.813919277,20 17:22:59.891942610,10 17:22:59.898820371,20 17:22:59.919604329,30
こんな感じで,小数点以下がすごい長いデータをパースしたいわけです.
一例としてこんな感じでしょうか.
import pandas as pd # データ読み込み df = pd.read_csv('file.csv', names=('time', 'val')) # datetime型に変換 from dateutil import parser df.time = df.time.apply(lambda x: parser.parse(x)) # 表示 print(df.dtypes)
出力すると
time datetime64[ns] val int64 dtype: object
parserを使って無理やりdatetime型に変えています.
あとはapplyで一行づつ適用してます.
若干力技な気がしますが...
追記
このフォーマットの場合はparse_datesで指定するだけでも行けるっぽい.
import pandas as pd # データ読み込み df = pd.read_csv('time.csv', names=('time', 'val'),parse_dates=['time']) # 表示 print(df.dtypes)