前提・実現したいこと
object型となっているデータから、datetime64型の日付データに変換したい。
困っていること、及び該当のソースコード
Python
1# 2つのCSVデータ中身(例) 2日時,株価,始値,高値,安値,出来高,時価総額(百万円) 32019/8/29 15:00,1383,1320,1399,1317,411900,22274 4 5日時,株価,始値,高値,安値,出来高,時価総額(百万円) 62019/8/30 15:00,1361,1353,1368,1337,269100,21919 7 8# 必要なライブラリをimport 9import json,csv 10import pandas as pd 11import numpy as np 12import glob 13 14# 2つのCSVを結合 15csv_files = glob.glob('*.csv') 16list = [] 17 18for f in csv_files: 19 list.append(pd.read_csv(f, encoding='cp932')) 20df = pd.concat(list) 21 22dfs = df.rename(columns={'日時': 'date', '株価': 'close', '始値': 'open', '高値': 'high', '安値': 'low', '出来高': 'volume', '時価総額(百万円)': 'Market-cap'})
このような形で作ったデータの型を見ると、以下のように表示されました。object型ではあるものの、要素は文字列str型ではない、とのこと。
Python
1print(dfs['date'].dtypes) 2# object 3 4print(type(dfs['date'][0])) 5# <class 'pandas.core.series.Series'>
なので、以下のようにすると、以下のようなエラーメッセージが出てしまい、変換できませんでした。
Python
1pd.to_datetime(df['date']) 2 3# ValueError: String does not contain a date.
ただし、確認したところ、1つのCSVデータ単体の'date'の型を見ると、以下のように変換する必要のない、求める型で存在していることが分かりました。
Python
1# datetime64[ns] 2# <class 'pandas._libs.tslib.Timestamp'>
したがって、CSVを結合したことによって型が変わってしまったと考えられるのですが、このようなケースで、'date'の型を上記のように求める型に戻す、もしくは求める型のまま結合するにはどのようにしたらいいでしょうか。また、さらに、最終形態としては「2019/8/30 15:00」ではなく「2019/8/30」と時間を削除した形で表示できるようにしたいです。
以上、解決方法など、アドバイスいただけると助かります。よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー