前提・実現したいこと
-
最終目標
Python, Pandasで時系列解析 -
実現したいこと
CSVファイルからDataFrameへ取り込んだ"DATE"列, "TIME"列を1つに統合して
"YYYY-mm-dd HH:mm:ss"とするindex列としたいです。
- 課 題
"DATE"列のパースのやり方はGoogleで調べて分かりました。
"TIME"列を"HH:mm:ss"とし、最終的に"YYYY-mm-dd HH:mm:ss"とする
スマートなやり方がわからないです。
質問者背景
・Python初学者 (専門 化学)
・開発経験 Excel VBAのみ
発生している問題・エラーメッセージ
解析したいCSVデータ構造、問題のある現状のDataFrame、および
理想とするDataFrameは補足情報にあるとおりです。
Pandas DataFrameへの取り込んだ"日付"列, "時間"列を1つに統合して
"YYYY-mm-dd HH:mm:ss"と表記したいです。
該当のソースコード
Python3
1import pandas as pd 2#parser 3dateparse = lambda d: pd.datetime.strptime(d, '%Y%m%d') 4 5df = pd.read_csv(’data.csv’, index_col='DATE', date_parser = dateparse) 6 7#ここから先、"日付"列, "時間"列を1つに統合して 8#"YYYY-mm-dd HH:mm:ss"と表記したい
試したこと
最終的に、pd.to_datetime型にしたいので
DATE列から日付文字列を抽出し、次に、時間を...と考えました。
しかし、このやり方ではスマートではないので、
スマートなやり方がございましたら、教えて頂きたいです。
Python3
1def left(text, n): 2 return text[:n] 3 4#DATE(文字列として抽出) 5dates = left(str(df.index[0]),10) 6 7#....
補足情報(FW/ツールのバージョンなど)
CSV file(計3列)
DATE | TIME | X |
---|---|---|
20141001 | 000001 | 5 |
20141001 | 000002 | 5 |
20141001 | 000003 | 5 |
...|...|...
20141001|005957|5
20141001|005958|5
20141001|005959|5
20141001|010000|5
(現状) DataFrame(計3列)
課題 TIME列の読込がおかしい
DATE | TIME | X |
---|---|---|
2014-10-01 | 1 | 5 |
2014-10-01 | 2 | 5 |
2014-10-01 | 3 | 5 |
...|...|...
2014-10-01|5957|5
2014-10-01|5958|5
2014-10-01|5959|5
2014-10-01|10000|5
(理想) DataFrame[DATETIME, Value(計2列)]
DATE列とTIME列を結合し、index列としたい
DATETIME | X |
---|---|
2014-10-01 00:00:01 | 5 |
2014-10-01 00:00:02 | 5 |
2014-10-01 00:00:03 | 5 |
...|...
2014-10-01 00:59:57|5
2014-10-01 00:59:58|5
2014-10-01 00:59:59|5
2014-10-01 01:00:00|5
環境
- Windows 7
- Anaconda custom (64-bit)| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)]
- Python: 3.6.6, Pandas: 0.23.4
- Jupyter Notebook
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/17 07:41