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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

2574閲覧

DataFrameのラベル名の二重を解消するには

okahijiki

総合スコア404

Python 3.x

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/02/11 06:22

スクレイピングしたテーブルの列のラベル名が重複していて、任意の列を抽出しても、やはり、同様のままになってしまいます。
具体的には、以下の「日照時間(h)」となります。
これを通常の、ひとつのラベル名にするのは、どのようなコードを記述すれば良いでしょうか。
よろしく、お願いいたします。

python

1import pandas as pd 2 3# 東京の天気の要素を示すサイトのURLを変数に入れる 4url=('http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s1.php?prec_no=44&block_no=47662&year=2019&month=&day=&view=') 5 6# スクレイピングする 7WeatherTKO=pd.read_html(url)[0] 8WeatherTKO

イメージ説明

python

1# 日照時間(h)を抽出する 2SunshineHoursTKO=pd.read_html(url)[0]['日照時間(h)'] 3SunshineHoursTKO

イメージ説明

python

1# ためしてみたこと:その1 2SunshineHoursTKO.columns['日照時間(h)']

結果:
IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices

python

1# ためしてみたこと:その2 2SunshineHoursTKO.rename({'日照時間(h)':'日照時間(h)'})

結果:

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

取得したデータのColumnはMultiIndexとなっておりますので、DataFrame.droplevel() にて不要なLevelのColumnを削除すると良いかと思います。

https://pandas-docs.github.io/pandas-docs-travis/reference/api/pandas.DataFrame.droplevel.html

Python

1WeatherTKO=pd.read_html(url)[0]['日照時間(h)'] 2WeatherTKO = WeatherTKO.droplevel(1, axis=1) 3print(WeatherTKO) 4# 日照時間(h) 5#0 222.2 6#1 138.0 7#2 177.3 8#3 194.4 9#4 229.4 10#5 129.5 11#6 81.1 12#7 187.8 13#8 137.6 14#9 112.8 15#10 170.3 16#11 128.6 )

投稿2020/02/11 07:31

magichan

総合スコア15898

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

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

okahijiki

2020/02/11 07:50

できましたー。DataFrame.droplevel()、ですね。知らないモジュールが、まだまだ、たくさんあります。ありがとうございますー。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問