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

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

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

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

Q&A

解決済

1回答

700閲覧

列の計算ができません

sakamoto8810

総合スコア2

Python

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

0グッド

0クリップ

投稿2021/04/21 00:16

前提・実現したいこと

(本塁打+三振)/打数*本塁打=ロマン指数
という計算ができません。
データはhttps://baseballdata.jp/2020/chr.html
からとっております。

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

# floatに変換 df['ロマン指数'] = (df['三振'].astype(float) + df['本塁打'].astype(float)) / df['打数'].astype(float) * df['本塁打'].astype(float) df --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-4-52ec09019e36> in <module> 1 # floatに変換 ----> 2 df['ロマン指数'] = (df['三振'].astype(float) + df['本塁打'].astype(float)) / df['打数'].astype(float) * df['本塁打'].astype(float) 3 df ~\anaconda3\lib\site-packages\pandas\core\generic.py in astype(self, dtype, copy, errors) 5544 else: 5545 # else, only a single dtype is given -> 5546 new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors,) 5547 return self._constructor(new_data).__finalize__(self, method="astype") 5548 ~\anaconda3\lib\site-packages\pandas\core\internals\managers.py in astype(self, dtype, copy, errors) 593 self, dtype, copy: bool = False, errors: str = "raise" 594 ) -> "BlockManager": --> 595 return self.apply("astype", dtype=dtype, copy=copy, errors=errors) 596 597 def convert( ~\anaconda3\lib\site-packages\pandas\core\internals\managers.py in apply(self, f, align_keys, **kwargs) 404 applied = b.apply(f, **kwargs) 405 else: --> 406 applied = getattr(b, f)(**kwargs) 407 result_blocks = _extend_blocks(applied, result_blocks) 408 ~\anaconda3\lib\site-packages\pandas\core\internals\blocks.py in astype(self, dtype, copy, errors) 593 vals1d = values.ravel() 594 try: --> 595 values = astype_nansafe(vals1d, dtype, copy=True) 596 except (ValueError, TypeError): 597 # e.g. astype_nansafe can fail on object-dtype of strings ~\anaconda3\lib\site-packages\pandas\core\dtypes\cast.py in astype_nansafe(arr, dtype, copy, skipna) 993 if copy or is_object_dtype(arr) or is_object_dtype(dtype): 994 # Explicit copy, or required since NumPy can't view from / to object. --> 995 return arr.astype(dtype, copy=True) 996 997 return arr.view(dtype) ValueError: could not convert string to float: '三振'

該当のソースコード

# インポートします import pandas as pd import matplotlib.pyplot as plt # 目的とするwebページへアプローチ url = 'https://baseballdata.jp/2020/chr.html' # ページ上のhtmlテーブルを読み込む dfs = pd.read_html(url) # このままだとリスト形式のままなので、pandasデータフレームへ変換 df = dfs[0] df ここから先がエラーになります! # floatに変換 df['ロマン指数'] = df['本塁打'].astype(float) + df['三振'].astype(float) df

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

2行ほど、ヘッダ(インデックス)と同じ内容のデータが含まれているためエラーになります。

df = dfs[0]

df0 = dfs[0]
df = df0[df0['選手名']!='選手名'].reset_index(drop=True)

とすれば動きます。

python

1>>> df0 = dfs[0] 2>>> df = df0[df0['選手名']!='選手名'].reset_index(drop=True) 3>>> df['ロマン指数'] = df['本塁打'].astype(float) + df['三振'].astype(float) 4>>> df 5 選手名 球団 調子 打率 打点 本塁打 安打数 単打 2塁打 3塁打 最近5試合 ... 企犠打 犠打 犠打成功率 犠飛 代打数 代打安打 代打率 併殺 失策 三振 ロマン指数 60 1:岡本 和真 巨 NaN .275 97 31 121 64 26 0 .313 ... 0 0 .--- 0 0 0 .--- 10 8 85 116.0 71 2:村上 宗隆 ヤ NaN .307 86 28 130 70 30 2 .375 ... 0 0 .--- 1 0 0 .--- 8 14 115 143.0 82 3:大山 悠輔 阪 NaN .288 85 28 122 68 21 5 .167 ... 1 1 1.000 1 3 1 .333 15 6 96 124.0 93 4:丸 佳浩 巨 NaN .284 77 27 120 61 31 1 .278 ... 3 3 1.000 2 1 0 .000 3 3 101 128.0 104 5:鈴木 誠也 広 NaN .300 75 25 129 76 26 2 .417 ... 0 0 .--- 3 1 1 1.000 15 2 73 98.0 11.. ... .. ... ... .. .. ... .. .. .. ... ... .. .. ... .. .. ... ... .. .. ... ... 1290 91:蝦名 達夫 D NaN .143 1 1 3 1 1 0 .000 ... 0 0 .--- 0 13 3 .231 1 0 8 9.0 1391 92:正隨 優弥 広 NaN .143 1 1 1 0 0 0 .000 ... 0 0 .--- 0 6 1 .167 1 0 1 2.0 1492 93:桑原 将志 D NaN .139 2 1 5 4 0 0 .000 ... 1 1 1.000 1 12 1 .083 2 0 11 12.0 1593 94:石垣 雅海 中 NaN .121 1 1 4 3 0 0 .000 ... 0 0 .--- 0 15 3 .200 0 0 12 13.0 1694 95:西 勇輝 阪 NaN .109 7 1 5 2 2 0 .000 ... 10 9 .900 0 0 0 .--- 0 2 16 17.0 17 18[95 rows x 41 columns]

投稿2021/04/21 00:52

ppaul

総合スコア24666

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

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

sakamoto8810

2021/04/21 23:41

できました! 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問