質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

255閲覧

python3.x 日付ファーマットの変換方法

kazushige

総合スコア20

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/07/30 09:54

2つのcsvの株価データを日付をキーにマージしたい。しかし、キーの日付データが、%Y/%m/%dと%Y-%m-%dで異なっていて、うまく統合できない。
どちらかの株価データの日付データのフォーマットを変更して合わせたらと思っているのですが、方法を教えてください。

jupyter notebookを使い、pandasをインストルして行っています。
プログラム例:
import pandas as pd
%matplotlib inline

stockPriceTable = pd.read_csv("stockPriceTable.csv",encoding="utf-8_sig")
stockPrise = stockPriceTable.iloc[[0,1,2,3,4],[0, 4]] #df.iloc[[1, 2],[0, 1]]1, 2行目の0, 1列
print("stockPrise =\n",stockPrise)

n225 = pd.read_csv('n225x.csv',usecols=['日付','終値','日経CFD:前日比','日経CFD:翌日比'],encoding="shift-jis")
n225.rename(columns={"日付":"date"}, inplace=True)#,encoding="utf-8_sig")
n225 = n225.loc[:, ['date','日経CFD:前日比','日経CFD:翌日比']]
n1 = len(n225)
n225d = n225.iloc[n1-7:n1,:]
print("n225d =\n",n225d)

print('############### 指定列データをキーにしてマージ ########################')
ETFTable = pd.merge(stockPriceTable, n225, on='date')
print("ETFTable =\n",ETFTable)

プリントアウト:
stockPrise =
date 1329 iシェアーズ・コア 日経225ETF
0 2019-07-29 -60.0
1 2019-07-26 -140.0
2 2019-07-25 90.0
3 2019-07-24 60.0
4 2019-07-23 260.0
n225d =
date 日経CFD:前日比 日経CFD:翌日比
2212 2019/7/19 NaN NaN
2213 2019/7/22 NaN NaN
2214 2019/7/23 NaN NaN
2215 2019/7/24 NaN NaN
2216 2019/7/25 NaN NaN
2217 2019/7/26 NaN NaN
2218 2019/7/29 NaN NaN
############### 指定列データをキーにしてマージ ########################
ETFTable =
Empty DataFrame
Columns: [date, year, month, day, 1329 iシェアーズ・コア 日経225ETF, 1364 iシェアーズ JPX日経400 ETF, 1369 One ETF 日経225, ・・・・・・・・・・・・・・・

 'date'のフォーマットが違うためと思われます。株価データを入手すると時にファーマットを合わせれないので、dateフォーマットを合わすため、一方を変更したらよいとのですが、その
方法が分かりません。ご指導をお願いいたします。(説明しやすくするため、プログラムは省略しています。n225dのNaN部には実際には株価データが入っています。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

import datetime

df1['date'] = pandas.to_datetime(df1['date'])
df2['date'] = pandas.to_datetime(df2['date'])

df3 = pandas.merge(df1, df2, how='inner', on='date')

上記の様なコードで出来るかと思います。

投稿2019/07/30 11:40

meg_

総合スコア10602

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazushige

2019/07/31 01:16

みごとに解決いたしました。ありがとうございます。 私としては、方法がありそうな問題なので、数日インターネットで色々調べてみたのですが、発見でできませんでした。重ねてお礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問