日付をキーにして、DataFrameデータをマージしたいのですが、日付のファーマットが、
②と③の時はうまくいくが、①と②のマージはうまくいかない。
①20190802 ②2019-08-02 ③2019/8/2
プロクラム例(説明のために作成したプログラム)
python3.5で、Jupyter Notebockを使ってプログラム。
import pandas as pd
import datetime
############### 指定列データ「日付」をキーにしてマージ ##################
kabuka = pd.read_csv('1329.csv',usecols=['日付','終値'],encoding="shift-jis")
kabuka.rename(columns={'終値':'1329'}, inplace=True)
print('kabuka =\n',kabuka[:2])
n225x = pd.read_csv('n225x.csv',usecols=['日付','終値'],encoding="shift-jis")
kabuka.rename(columns={'終値':'n225'}, inplace=True)
print('n225x =\n',n225x[:2])
kabukas['日付'] = pd.to_datetime(kabukas['日付'])
print('kabukas[日付] =\n',kabukas[:2])
n225x['日付'] = pd.to_datetime( n225x['日付'])
print('n225x[日付] =\n',n225x[:2])
ETFTable_X = pd.merge( kabukas, n225x,how='inner', on='日付')
print('ETFTable_X =\n',ETFTable_X[:2])
次にこれを実行した結果示す。
日付データが異なるため、一致するキーデータがなく、Emptyになっている。
日付データが20190802ではなく、2019-08-02の時データのものは、うまくいく。
(以前、この場で教えていただいたときはそのようなケースでした)
また、ご教授方よろしくお願いします。
kabuka =
日付 1329
0 20190802 21850
1 20190801 22300
n225x =
日付 終値
0 2015/1/2 17432
1 2015/1/5 17097
kabukas[日付] =
日付 1329 1364
0 1970-01-01 00:00:00.020190802 -450 -550
1 1970-01-01 00:00:00.020190731 -190 210
n225x[日付] =
日付 終値
0 2015-01-02 17432
1 2015-01-05 17097
ETFTable_X =
Empty DataFrame
Columns: [日付, 1329, 1364, 終値]
Index: []
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/06 05:57