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

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

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

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

Q&A

解決済

1回答

1069閲覧

pandasによる特定の行の抽出(初心者ですがよろしくお願いします)

seiyaistennisbu

総合スコア3

Python

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

0グッド

0クリップ

投稿2023/03/24 05:22

実現したいこと

pandas.read_htmlを用いてスクレイピングしたデータフレームから特定の行だけを取り出したい

前提

pythonを用いて競馬のデータ整理をしています.
以前はネット競馬(https://race.netkeiba.com/race/result.html?race_id=200701010110)より

import pandas as pd pd.read_html('https://race.netkeiba.com/race/result.html?race_id=200701010110')[0][['単勝オッズ','人気']]

で一番上の表から単勝オッズと人気の行だけを抜き出せていたのですが,最近できなくなりました.
ネットを見てもこの方法しか見つかりませんのでご教授お願いします.

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- KeyError Traceback (most recent call last) Cell In[82], line 1 ----> 1 pd.read_html('https://race.netkeiba.com/race/result.html?race_id=200701010110')[0][['人気','単勝オッズ']] File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pandas/core/frame.py:3813, in DataFrame.__getitem__(self, key) 3811 if is_iterator(key): 3812 key = list(key) -> 3813 indexer = self.columns._get_indexer_strict(key, "columns")[1] 3815 # take() does not accept boolean indexers 3816 if getattr(indexer, "dtype", None) == bool: File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pandas/core/indexes/base.py:6070, in Index._get_indexer_strict(self, key, axis_name) 6067 else: 6068 keyarr, indexer, new_indexer = self._reindex_non_unique(keyarr) -> 6070 self._raise_if_missing(keyarr, indexer, axis_name) 6072 keyarr = self.take(indexer) 6073 if isinstance(key, Index): 6074 # GH 42790 - Preserve name from an Index File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pandas/core/indexes/base.py:6130, in Index._raise_if_missing(self, key, indexer, axis_name) 6128 if use_interval_msg: 6129 key = list(key) -> 6130 raise KeyError(f"None of [{key}] are in the [{axis_name}]") 6132 not_found = list(ensure_index(key)[missing_mask.nonzero()[0]].unique()) 6133 raise KeyError(f"{not_found} not in index") KeyError: "None of [Index(['人気', '単勝オッズ'], dtype='object')] are in the [columns]"

該当のソースコード

pd.read_html('https://race.netkeiba.com/race/result.html?race_id=200701010110')[0][['人気','単勝オッズ']]

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

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

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

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

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

melian

2023/03/24 05:48

列名を確認してみるとスペースが入っていますね。(「単勝 オッズ」と「人 気」) なので、以下の様にすると問題ないのですが、今後のことを考えるとカラム名からスペースを削除する処理をする方がよさそうです。 pd.read_html('https://race.netkeiba.com/race/result.html?race_id=200701010110')[0][['単勝 オッズ','人 気']]
seiyaistennisbu

2023/03/24 06:16

ありがとうございました. 上記のように治すと治すことができました.
guest

回答1

0

自己解決

melianさんに回答いただいた内容で解決することができました.
ありがとうございました.

投稿2023/03/24 06:17

seiyaistennisbu

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問