🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1639閲覧

indexを日付型に変換したら1900年から始まってしまいます。

o-fk

総合スコア32

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/02 07:14

気象庁の東京の気温のページの表をスクレイピングしてデータフレームにしたのですが、表に12/1が付与されていない為、pythonでそのままデータフレームにした後に日付型に変換すると1900年になってしまいます。このデータフレームの日付を2020-12-1 00:00のようにするにはどうすればよいでしょうか。

イメージ説明

import numpy as np import pandas as pd from datetime import datetime url = 'http://www.data.jma.go.jp/obd/stats/etrn/view/10min_s1.php?prec_no=44&block_no=47662&year=2020&month=12&day=1&view=' data = pd.read_html(url) data[0].columns = ['時分','現地','海面','降水量(mm)','気温(℃)','相対湿度(%)','平均','風向','最大瞬間','風向','日照時間(分)'] df = data[0][['時分', '気温(℃)', '相対湿度(%)']] df = df.replace('24:00', '0:00') df.set_index('時分', inplace=True) df.index = pd.to_datetime(df.index, format='%H:%M') df

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

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

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

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

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

guest

回答2

0

24:00の扱いが面倒なので、timedelta型に変換してから、日付とくっつけています。

pandas.to_timedelta()HH:MM:SSのフォーマットしかダメなので、秒を追加してから変換しています。

python

1# (途中から) 2df = data[0][['時分', '気温(℃)', '相対湿度(%)']] 3df.set_index('時分', inplace=True) 4 5df.index = pd.to_datetime('2020/12/01') + pd.to_timedelta(df.index + ":00")

投稿2020/12/02 07:55

bsdfan

総合スコア4794

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

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

o-fk

2020/12/02 22:45

ありがとうございました!
guest

0

ベストアンサー

とりあえず出来ましたが、start = "2020/12/1"のところは可変にしたほうが良かったかもしれません。どう使われるのかよく分かってませんが、

python3

1import numpy as np 2import pandas as pd 3from datetime import datetime, timedelta 4 5url = 'http://www.data.jma.go.jp/obd/stats/etrn/view/10min_s1.php?prec_no=44&block_no=47662&year=2020&month=12&day=1&view=' 6data = pd.read_html(url) 7 8data[0].columns = ['時分','現地','海面','降水量(mm)','気温(℃)','相対湿度(%)','平均','風向','最大瞬間','風向','日照時間(分)'] 9 10df = data[0][['時分', '気温(℃)', '相対湿度(%)']] 11 12def conv24to0(t): 13 start = "2020/12/1" 14 if t == '24:00' : 15 result = 1440 16 else : 17 s = datetime.strptime(t,"%H:%M") 18 result = s.hour*60 + s.minute 19 return datetime.strptime(start,"%Y/%m/%d") + timedelta(minutes=result) 20df['時分'] = df['時分'].apply(conv24to0) 21df.set_index('時分', inplace=True) 22print(df) 23 24 25# 気温(℃) 相対湿度(%) 26# 時分 27# 2020-12-01 00:10:00 9.5 84 28# 2020-12-01 00:20:00 9.6 84 29# 2020-12-01 00:30:00 9.4 84 30# 2020-12-01 00:40:00 9.8 80 31# 2020-12-01 00:50:00 8.7 84 32# ... ... ... 33# 2020-12-01 23:20:00 9.2 75 34# 2020-12-01 23:30:00 9.5 74 35# 2020-12-01 23:40:00 9.3 74 36# 2020-12-01 23:50:00 9.0 76 37# 2020-12-02 00:00:00 8.6 78 38 39# [144 rows x 2 columns]

投稿2020/12/02 07:44

jeanbiego

総合スコア3966

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

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

o-fk

2020/12/02 22:46

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問